Jaka jest różnica między ampersandem a średnikiem w Linux Bash ?
Na przykład,
$ command1 && command2
vs
$ command1; command2
Jaka jest różnica między ampersandem a średnikiem w Linux Bash ?
Na przykład,
$ command1 && command2
vs
$ command1; command2
Odpowiedzi:
&&
Operator jest logiczna AND Operator: jeśli lewa strona zwraca stan niezerowe exit, ponownie operatora o statusie i nie ocenia właściwej stronie (zwarć), inaczej ocenia prawej stronie i zwraca jego status wyjścia . Jest to często używane, aby upewnić się, że command2
zostanie uruchomiony tylko wtedy, gdy zostanie command1
pomyślnie uruchomiony.
;
Żeton tylko oddziela poleceń, więc to będzie działać drugie polecenie, niezależnie od tego, czy pierwsza powiedzie.
&&
różni się od pojedynczego znaku ampersand &
w bash?
&
powoduje, że polecenie jest uruchamiane w tle, więc tak. „Uruchom to w tle” bardzo różni się od „uruchom to następne polecenie tylko wtedy, gdy drugie się powiedzie”.
;
nadal czeka na zakończenie pierwszego polecenia?
a;b
oznacza „biegnij, a
a potem biegnij b
”. a&&b
oznacza „uruchom a
, a następnie uruchom b
tylko wtedy, gdy się a
powiedzie”.
command1 && command2
wykonuje, command2
jeśli (i tylko wtedy) command1
wykonanie zakończy się pomyślnie. W żargonie uniksowym oznacza to kod zakończenia / kod powrotu równy zero.
command1; command2
wykonuje się command2
po wykonaniu command1
sekwencyjnie. Nie ma znaczenia, czy polecenia się powiodły, czy nie.
Pierwsza jest prostą logiką AND
wykorzystującą analizę zwarć, druga po prostu rozgranicza dwa polecenia.
W rzeczywistości dzieje się tak, że gdy pierwszy program zwraca niezerowy kod zakończenia, całość AND
jest oceniana do, FALSE
a drugie polecenie nie zostanie wykonane. Później po prostu wykonuje je po kolei.