Jeśli chodzi o brak tematu, ostatnim razem, gdy sprawdzałem, bash nadal był językiem programowania, ale wcześniej się myliłem i mogły to być suszone cukierki owocowe.
Steve K
Tak jest i gdybyś zadawał pytanie dotyczące określonego zachowania lub właściwego sposobu zrobienia określonej rzeczy, z pewnością byłby to temat. To należy do szarej kategorii „pytania o składnię języka”, która nie jest tak wyraźnie kwestią „programowania”, jeśli o mnie chodzi.
Etan Reisner
4
bash jest w pewnym sensie wytrawny, a pod pewnymi względami słodki. Pod koniec dnia jest całkiem przyjemna i przyswajalna. Nie można go jednak łatwo ukraść dzieciom.
code_monk
Odpowiedzi:
139
&&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.
czy podwójny ampersand &&różni się od pojedynczego znaku ampersand &w bash?
Charlie Parker
16
@CharlieParker &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”.
cdhowie
Polecenie2 uruchomi tylko polecenie1 zwróciło zerowy kod zakończenia, co oznacza, że zakończyło się pomyślnie.
Nik
Czy ;nadal czeka na zakończenie pierwszego polecenia?
rfii
@rfii Tak, ale wykonuje drugie polecenie bez względu na to, czy pierwsze polecenie się powiodło. a;boznacza „biegnij, aa potem biegnij b”. a&&boznacza „uruchom a, a następnie uruchom btylko wtedy, gdy się apowiedzie”.
cdhowie
33
polecenie1 && polecenie2
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.
polecenie1; polecenie2
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.
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ę, żecommand2
zostanie uruchomiony tylko wtedy, gdy zostaniecommand1
pomyślnie uruchomiony.;
Żeton tylko oddziela poleceń, więc to będzie działać drugie polecenie, niezależnie od tego, czy pierwsza powiedzie.źródło
&&
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 biegnijb
”.a&&b
oznacza „uruchoma
, a następnie uruchomb
tylko wtedy, gdy sięa
powiedzie”.polecenie1 && polecenie2
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.polecenie1; polecenie2
command1; command2
wykonuje sięcommand2
po wykonaniucommand1
sekwencyjnie. Nie ma znaczenia, czy polecenia się powiodły, czy nie.źródło
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.źródło