Qual è la differenza tra e commerciale e punto e virgola in Linux Bash ?
Per esempio,
$ command1 && command2
vs
$ command1; command2
Qual è la differenza tra e commerciale e punto e virgola in Linux Bash ?
Per esempio,
$ command1 && command2
vs
$ command1; command2
Risposte:
L' &&operatore è un operatore booleano AND: se il lato sinistro restituisce uno stato di uscita diverso da zero, l'operatore restituisce quello stato e non valuta il lato destro (va in cortocircuito), altrimenti valuta il lato destro e restituisce il suo stato di uscita . Questo è comunemente usato per assicurarsi che command2venga eseguito solo se command1eseguito correttamente.
Il ;token separa solo i comandi, quindi eseguirà il secondo comando indipendentemente dal fatto che il primo abbia successo o meno.
&&diversa da una singola e commerciale &in bash?
&fa sì che il comando venga eseguito in background, quindi sì. "Esegui questo comando in background" è molto diverso da "esegui questo comando successivo solo se questo altro ha esito positivo".
;ancora attendere per il primo comando per finire?
a;bsignifica "corri ae poi corri b". a&&bsignifica "esegui a, quindi esegui bsolo se ha aavuto successo".
command1 && command2viene eseguito command2se (e solo se) l' command1esecuzione finisce con successo. In gergo Unix, ciò significa codice di uscita / codice di ritorno uguale a zero.
command1; command2viene eseguito command2dopo l'esecuzione command1, in sequenza. Non importa se i comandi hanno avuto successo o meno.
La prima è una logica semplice che ANDutilizza la valutazione del cortocircuito, la seconda delimita semplicemente due comandi.
Ciò che accade nella realtà è che quando il primo programma restituisce un codice di uscita diverso da zero, ANDviene valutato l'intero FALSEe il secondo comando non verrà eseguito. Il secondo li esegue semplicemente entrambi in ordine.