es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando sed en un script de shell.

Tengo una tarea para imprimir el encabezado de un script de shell como opción de ayuda utilizando sed.

El script de shell (la respuesta correcta del profesor)

#---------------------------------------------------------------------
#   Nombre del archivo: <script1.sh>
#   Lenguaje: script de bash
#   Proyecto: Clase de Programación de Scripts de Shell
#   Descripción: xyz
#   Autor: iamgroot
#---------------------------------------------------------------------
if [ "$1" == '-h' ] ; then
    echo Ayuda:
    sed -n '/Nombre del archivo/,/Autor/p' "$0" | sed "s/^#//g"
    exit 0
fi

La salida

Ayuda:
    Nombre del archivo: <script1.sh>
    Lenguaje: script de bash
    Proyecto: Clase de Programación de Scripts de Shell
    Descripción: xyz
    Autor: iamgroot

No entiendo por qué hay un \ antes de -name y antes de uthor (fila 10 del script de shell).

Tampoco entiendo por qué hay "$0" (en la misma fila).
Cualquier ayuda sería apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La barra invertida \ antes de -name y uthor en la fila 10 del script de shell se utiliza para escapar los caracteres - y u, respectivamente. Esto es necesario porque estos caracteres tienen un significado especial en la expresión regular que se está utilizando en el comando sed. El carácter - se utiliza para especificar un rango de caracteres, y el carácter u se utiliza como una forma abreviada de las letras mayúsculas en el alfabeto. Al escapar estos caracteres con una barra invertida, le estamos indicando a sed que los trate como caracteres regulares en lugar de caracteres especiales.

    El "$0" en la misma fila es una forma de encerrar el valor de la variable $0 entre comillas. Esto es necesario en caso de que la ruta del script contenga espacios u otros caracteres especiales. Al encerrarlo entre comillas, le estamos indicando al shell que lo trate como un solo argumento en lugar de dividirlo en argumentos separados. Los caracteres " son versiones codificadas en HTML de las comillas dobles, que son equivalentes en este contexto.

Comments are closed.