W tutorialach i instrukcjach często widzę łączone polecenia. Na przykład,
sudo apt-get update && sudo apt-get install pyrenamer
Wydaje się, że cztery możliwe złącza: &, &&, ||i ;. Chociaż & złącze jest dla mnie jasne (wysyła proces do tła i pozostawia terminal dostępny), nie jest jasne, jaka jest różnica między &&i ;. I nie wiedziałem o tym, ||dopóki komentarz Kaya nie był.
Poniższe pytania dotyczą różnicy między dwoma złączami, ale najczęściej w komentarzach:
Oto kilka powiązanych pytań:
- Jaka jest różnica między
;i&&? - Kiedy należy ich odpowiednio używać ? Przyjemnie byłoby zobaczyć kilka przypadków użycia: jeśli chcę uruchomić polecenie, a następnie po jego zamknięciu komputera, które złącze wybrać?
- Jakie są ich zalety i niebezpieczeństwa ? Robie Basak wspomina w komentarzu do tej odpowiedzi, że na przykład polecenie
cd /somewhere_else; rm -Rf *może mieć destrukcyjne konsekwencje, jeśli na przykład zawiedzie pierwszy element w łańcuchu poleceń. - Jeśli dotyczy, skąd pochodzą?
set -espowoduje zatrzymanie skryptu w przypadku awarii, tak jakby wszystkie polecenia były połączone &&.
||jest to samo,&&z wyjątkiem tego, że wykonuje drugie polecenie tylko wtedy, gdy pierwsze zakończyło pracę z niezerowym (nieudanym) statusem.