¿Cómo comentar comandos de varias líneas en scripts de shell?


19

Al invocar comandos largos y pesados, es una buena práctica escribirlos en scripts de shell. ¿Hay una manera fácil de comentar líneas en dichos scripts? He probado los siguientes métodos, pero ninguno funciona.

# the \ is also commented out, resulting in "command" and "--good-switch".
command \
  #--bad-switch \
  --good-switch \

# seems to send an extra argument to the command
command \
  \ #--bad-switch \
  --good-switch
shell 

1
El segundo hace que se envíe un espacio como argumento ( \ escapa al siguiente carácter, que "oculta" nuevas líneas pero hace que los espacios sean significativos).
geekosaur

Respuestas:


14

Esta podría ser una opción: almacenar el comando y los argumentos en una matriz, luego ejecutarlo después

# build the command
cmd=( ls
        -F
      # -a   # comment out this option temporarily
        -l
    )
# $cmd is now an array with 3 elements

# execute it
"${cmd[@]}"

Esto es bash
-solo

3

Siempre moví los comentados justo después del comando.

command \
  --good-switch
# --bad-switch          with explanation here, if needed

0

El problema es que las barras se eliminan antes de analizar la línea, por lo que el primer comando se analiza como si hubiera escrito command #--bad-switch --good-switch. Si tiene una secuencia de comandos realmente larga, podría, por ejemplo, escribir un bloque de comentarios línea por línea encima o debajo de él, explicando cada uno a su vez, o podría almacenar los parámetros en una variable (aunque eso a menudo le da dolores de cabeza entre comillas). caracteres especiales).


1
Ese no parece ser el caso. --good-switchse interpreta como un comando.


0

un comentario frena la cadena de líneas conectadas, por lo que la solución más simple sería mover las líneas comentadas al final de la lista.

command \
  --good-switch \
  # --bad-switch \

Si no desea cambiar el orden, puede usar el :comando (la utilidad de dos puntos, que no hace nada) para mantener intactas las líneas conectadas:

command \
  `: --bad-switch `\
  --good-switch \

Probé con esto:

function command { 
  echo "num args:" $#;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.