bash - signo - raya de dialogo para niños
¿Los puntos y coma superfluos al final de una línea en los guiones de shell? (5)
Tengo un script de shell que contiene lo siguiente:
case $1 in
0 )
echo $1 = 0;
OUTPUT=3;;
1 )
echo $1 = 1;
OUTPUT=4;;
2 )
echo $1 = 2;
OUTPUT=4;;
esac
HID=$2;
BUNCH=16;
LR=.008;
¿Los puntos y comas son completamente superfluos en el fragmento de arriba? ¿Y hay alguna razón para que algunas personas usen puntos y comas dobles?
Parece que los puntos y comas son solo un separador, algo que usarías en lugar de una nueva línea.
@ Ignacio Vázquez-Abrams
En realidad, esto no es del todo exacto, los puntos y comas simples al final de una línea no son superfluos y definitivamente no son lo mismo que las líneas nuevas.
Del manual de referencia de Bash
Comandos separados por un '';'' se ejecutan secuencialmente; el shell espera a que cada comando termine por turno. El estado de retorno es el estado de salida del último comando ejecutado.
Los comandos que están separados por "nueva línea" se pueden ejecutar en paralelo cuando los comandos separados por punto y coma siempre se ejecutan secuencialmente
De acuerdo con el man bash
:
metacharacter A character that, when unquoted, separates words. One of the following: | & ; ( ) < > space tab control operator A token that performs a control function. It is one of the following symbols: || & && ; ;; ( ) | |& <newline>
Entonces, el ;
puede ser un metacarácter o un operador de control, mientras que el ;;
es siempre un operador de control (en el comando de caso).
En tu código particular, todo ;
al final de la línea no son necesarios. El ;;
es necesario sin embargo.
En el caso especial de encontrar,; se usa para terminar comandos invocados por -exec. Vea la respuesta de @kenorb a esta question .
Los puntos y comas simples al final de una línea son superfluos, ya que la nueva línea también es un separador de comandos. case
específicamente necesita punto y coma doble al final del último comando en cada bloque de patrón; ver help case
para más detalles.
@ Opensourcebook-Amit
nuevas líneas equivalentes a punto y coma único (;) en el terminal o en el script de shell.
Vea los ejemplos a continuación:
En termainal: [root @ server test] # ls; pwd;
En el script de shell:
[prueba de servidor raíz] # cat test4.sh
echo "Nombre de usuario actual:" Whoami
echo -e "/ nFecha actual:"; fecha;
[root @ server test] #
Pero no estoy de acuerdo con el comentario de que & es equivalente a una línea nueva o un solo punto y coma
& se ejecuta comandos en segundo plano también un separador de comandos pero no se trabajó como punto y coma o nueva línea.