utilizar utiliza uso usar suspensivos son sirve sintaxis signos scripts script resueltos reglas que puntuacion puntos punto programas programacion pasar parametros para ortograficos los inglés ingles hacer español ejercicios ejemplos cuales como comas comandos comando coma cada sh semicolon dash

sh - utiliza - guión doble punto y coma(;;) sintaxis



signos ortograficos (2)

Intenté encontrar la manera de ejecutar varios comandos en paralelo en sh y esperar a que se complete. Descubrí que lo siguiente no funciona ( sh: 1: Syntax error: ";" unexpected ):

sh -c ''(sleep 3 && echo 1) & ; (sleep 3 && echo 2) & ; wait''

Pero esta sintaxis funciona como se esperaba:

sh -c ''(sleep 3 && echo 1) & ;; (sleep 3 && echo 2) & ;; wait''

Pero no entiendo cuál es la diferencia. Mi pregunta es cuál es el significado de ;; ¿Y cuándo se debe utilizar?


Se debe utilizar en una declaración de case , entre casos. El problema que tienes aquí es que tanto & como ; son separadores de comando, y solo deberías usar uno de ellos.


;; solo se utiliza en construcciones de case , para indicar el final de una alternativa. (Está presente donde tienes break en C.)

case $answer in yes) echo ''yay!'';; no) echo ''boo!'';; esac

Sintácticamente ; y & ambos marcan el final de un comando. Una nueva línea es equivalente a ; , en una primera aproximación. La diferencia entre ellos es que o nueva línea indica que el comando debe ejecutarse en primer plano, mientras que & indica que el comando debe ejecutarse en segundo plano.

Así que aquí necesitas & wait . & ; es un error de sintaxis (no puede tener un comando vacío). & ;; También es un error de sintaxis; ash lo deja ir (como si solo hubieras escrito & ), pero bash se queja. Evidentemente, su sh es una variante de ceniza (como dash, que es /bin/sh en muchos derivados de Debian).