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 command2zostanie uruchomiony tylko wtedy, gdy zostanie command1pomyś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;boznacza „biegnij, aa potem biegnij b”. a&&boznacza „uruchom a, a następnie uruchom btylko wtedy, gdy się apowiedzie”.
command1 && command2wykonuje, command2jeśli (i tylko wtedy) command1wykonanie zakończy się pomyślnie. W żargonie uniksowym oznacza to kod zakończenia / kod powrotu równy zero.
command1; command2wykonuje się command2po wykonaniu command1sekwencyjnie. Nie ma znaczenia, czy polecenia się powiodły, czy nie.
Pierwsza jest prostą logiką ANDwykorzystują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ść ANDjest oceniana do, FALSEa drugie polecenie nie zostanie wykonane. Później po prostu wykonuje je po kolei.