¿Cuál es la diferencia entre ampersand y punto y coma en Linux Bash ?
Por ejemplo,
$ command1 && command2
vs
$ command1; command2
¿Cuál es la diferencia entre ampersand y punto y coma en Linux Bash ?
Por ejemplo,
$ command1 && command2
vs
$ command1; command2
Respuestas:
El &&operador es un operador AND booleano: si el lado izquierdo devuelve un estado de salida distinto de cero, el operador devuelve ese estado y no evalúa el lado derecho (cortocircuita), de lo contrario evalúa el lado derecho y devuelve su estado de salida . Esto se usa comúnmente para asegurarse de que command2solo se ejecute si se command1ejecuta correctamente.
El ;token solo separa los comandos, por lo que ejecutará el segundo comando independientemente de si el primero tiene éxito o no.
&&diferente de un simple ampersand &en bash?
&hace que el comando se ejecute en segundo plano, así que sí. "Ejecutar esto en segundo plano" es muy diferente de "ejecutar este siguiente comando sólo si este otro tiene éxito".
command1 && command2se ejecuta command2si (y solo si) la command1ejecución finaliza correctamente. En la jerga de Unix, eso significa código de salida / código de retorno igual a cero.
command1; command2se ejecuta command2después de ejecutar command1, secuencialmente. No importa si los comandos tuvieron éxito o no.
La primera es una lógica simple que ANDusa evaluación de cortocircuito, la última simplemente delimita dos comandos.
Lo que sucede en real es que cuando el primer programa devuelve un código de salida distinto de cero, el conjunto ANDse evalúa FALSEy el segundo comando no se ejecutará. El último simplemente los ejecuta a ambos en orden.