Cuál es el uso de ; en un comando de una sola línea?

Cuál es el uso de ; en un comando de una sola línea?

¿Qué ;significa en scripts de una sola línea como este?

while true; do sudo -n true; sleep 60; kill -0 '$$' || exit; done 2>/dev/null &

¿Significa nueva línea o "siguiente comando"?

Respuesta1

Es un separador de comandos. Aunque en primera instancia sería mejor pensar que es el final de la whiledeclaración.

Por ejemplo, si quisieras hacer un bucle mientras algún comando devuelve éxito, harías algo como

while test -f /foo; do some_command; done`

El punto y coma se utiliza para indicar el final de los argumentos de test. De lo contrario se pensaría que does otro argumento más test.

Sin embargo, puede utilizar nuevas líneas en lugar de punto y coma. Lo siguiente sería exactamente equivalente al ejemplo anterior, solo que sin punto y coma

while test -f /foo
do
some_command
done

De hecho, con bash, si ejecuta el comando anterior y luego de que finaliza (o presiona CTRL+C), si retrocede en el historial (teclas de flecha hacia arriba o cualquier otra cosa), notará que reemplaza la línea múltiple. comando con uno que use punto y coma en su lugar.


Entonces sí, la sintaxis para cosas como ify whilerompe el comportamiento normal del shell.
Personalmente, siempre he pensado que la sintaxis es extraña, ya que doparece extraño. Pero te acostumbras a ello.

información relacionada