Z góry przepraszam, jeśli jest to duplikat pytania. Przed zapytaniem tutaj postarałem się wyszukać / sprawdzić.
Nie mam nic przeciwko pisaniu takich linijek:
foocommand && foocommand2 && foocommand3
Chodzi o to, że chcę, aby kolejne polecenia były uruchamiane tylko wtedy, gdy poprzednie było „udane”.
Piszę dość długi skrypt, a ten jednowierszowy program jest niewykonalny, ponieważ dla wszystkich innych wygląda na ogromny blok mylącego kodu.
Chcę rozdzielić polecenia i napisać między nimi komentarze w skrypcie. Jak mogę to zrobić i nadal mieć odpowiednik &&?
||
i &&
(w przeciwieństwie do |
lub &
) nazywa się zwarciem. Zachowanie stosowane w przypadku tych ostatnich operatorów nazywa się chętną oceną.
a && b && c
będzie działać tylko, b
jeśli się a
powiedzie, więc „działa tylko, c
jeśli się b
powiedzie” i „działa tylko, c
jeśli a
i b
oba się uda” są równoważnymi instrukcjami: b
nie można odnieść sukcesu, chyba że się a
powiedzie.
a || b && c
jest bardziej ilustracyjny.
true || false && echo hi
wyświetli hi
. Specyfikacja brzmi: Operatory „&&” i „||” będą miały równe pierwszeństwo i będą oceniane z pozostawionym skojarzeniem.
&&
nie znaczy późniejsza komenda będzie działać, jeśli poprzednie jeden był udany. Oznacza to polecenie będzie działać, jeśli zbiorowy wynik wśród wszystkich poprzednich poleceń na liście poleceń jest sukcesem. Być może wiesz o tym, ale przyszli czytelnicy mogą źle zrozumieć.