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;
¿Son completamente superfluos los puntos y comas en el fragmento de arriba? ¿Y hay alguna razón para que algunas personas usen punto y coma dobles?
Parece que los puntos y comas son solo un separador, algo que usaría en lugar de una nueva línea.
Según
man bash
:Por lo tanto,
;
puede ser un metacarácter u operador de control, mientras;;
que siempre es un operador de control (en caso de comando).En su código particular,
;
no son necesarios todos al final de la línea. El;;
embargo se necesita.fuente
;
y;;
, entonces? No estoy lo suficientemente familiarizado con el análisis sintáctico de BASH para conocer la diferencia práctica entre lo que BASH llama un "metacarácter" y lo que llama un "operador de control".En el caso especial de find,
;
se usa para terminar los comandos invocados por -exec. Vea la respuesta de @kenorb a esta pregunta .fuente
@ Opensourcebook-Amit
nuevas líneas equivalen a un punto y coma simple
;
en la terminal o en el script de shell.Vea los ejemplos siguientes:
En la terminal:
En el script de shell:
Pero no estoy de acuerdo con el comentario que
&
equivale a una nueva línea o un punto y coma simple&
Los comandos de ejecución en segundo plano también son un separador de comandos, pero no funciona como punto y coma o nueva línea.fuente
@Ignacio Vázquez-Abrams
En realidad, esto no es completamente 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
Los comandos separados por "nueva línea" pueden ejecutarse en paralelo cuando los comandos separados por punto y coma siempre se ejecutan de forma secuencial.
fuente
A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon.
Entonces, lo que citó sobre el punto y coma se aplica igualmente a las nuevas líneas.&
no\n
. En un comentario se dice que puede omitir el punto y coma porque aparentemente,&
también es un separador de comando como;
y\n
.