Domanda Qual è la differenza tra double-ampersand (&&) e punto e virgola (;) in Linux Bash?


Qual è la differenza tra e commerciale e punto e virgola in Linux bash?

Per esempio,

$ command1 && command2

vs

$ command1; command2

62
2017-09-04 15:36


origine


risposte:


Il && operatore è un operatore AND booleano: se il lato sinistro restituisce uno stato di uscita diverso da zero, l'operatore lo restituisce e non valuta il lato destro (cortocircuito), altrimenti valuta il lato destro e restituisce il suo stato di uscita. Questo è comunemente usato per assicurarsi che command2 viene eseguito solo se command1 ha funzionato con successo.

Il ; il token separa solo i comandi, quindi eseguirà il secondo comando indipendentemente dal fatto che il primo abbia o meno il primo.


83
2017-09-04 15:40



comando1 e& comando2

command1 && command2 esegue command2 se e solo se) command1 l'esecuzione finisce con successo. Nel gergo Unix, ciò significa codice di uscita / codice di ritorno uguale a zero.

comando1; comando2

command1; command2 esegue command2 dopo l'esecuzione command1, in sequenza. Non importa se i comandi hanno avuto successo o meno.


24
2017-09-04 15:40



Il primo è una logica semplice AND utilizzando la valutazione del cortocircuito, quest'ultimo semplicemente delimita due comandi.

Quello che succede in realtà è che quando il primo programma restituisce un codice di uscita diverso da zero, il tutto AND è valutato a FALSE e il secondo comando non verrà eseguito. Più tardi li esegue entrambi in ordine.


4
2017-09-04 15:41