Jak cofnąć efekt „set -e”, który powoduje, że bash natychmiast kończy działanie, jeśli jakieś polecenie zawiedzie?


205

Po wejściu set -ew interaktywną powłokę bash, bash natychmiast zakończy działanie, jeśli jakiekolwiek polecenie zakończy się z niezerową wartością. Jak mogę cofnąć ten efekt?

Odpowiedzi:


309

Z set +e. Tak, to w tył, które umożliwiają powłoki z opcji set -i wyłączyć je set +. Rodzynki historyczne, donchanów.


Dziękuję bardzo, jest to jedna z ostatnich linii odpowiedniej strony podręcznika ( faqs.org/docs/bashman/bashref_56.html ), której nie przeczytałem do końca.
— Tianyi Cui

Podręcznik bash jest niesamowicie ogromny, to prawda. (FYI, ponieważ wydaje się, że jesteś nowy: kliknięcie znacznika wyboru pod najlepszą odpowiedzią na twoje pytanie jest zrobione, nazywa się to „akceptowaniem”.)
— zwolnij

12
Niestety, język powłoki Unix (z którego większość nie jest specyficzna dla „bash”) jest jednym z najmniej spójnych wewnętrznie języków programowania, które są nadal szeroko stosowane. Będziesz musiał nauczyć się o wiele więcej tych małych brodawek. Powiedziałbym, że to błąd w dokumentacji.
— zwolnienie

10
historyczne winogrona to piekło rodzynek!
— James

2
Wreszcie niesprawiedliwe bashowanie Bash: single dash jest standardową opcją wiersza poleceń powłoki POSIX, a zatem najbardziej naturalne dla „zrób coś”. +jest jak, -ale przejście przez coś oznacza „nie” jak w „≠”.
— Ciro Santilli 29 冠状 病 六四 事件 法轮功 法轮功

68

Używanie set +e/ za set -ekażdym razem, gdy chcesz go zastąpić, może być niewygodne . Znalazłem prostsze rozwiązanie.

Zamiast robić to w ten sposób:

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

możesz to zrobić w następujący sposób:

command_that_might_fail_but_we_want_to_ignore_it || true

lub, jeśli chcesz zapisać naciśnięcia klawiszy i nie masz nic przeciwko byciu trochę tajemniczym:

command_that_might_fail_but_we_want_to_ignore_it || :

Mam nadzieję że to pomoże!


11
Zastanawiałem się nad historią :i znalazłem tutaj moją odpowiedź , na wypadek gdyby ktoś inny był ciekawy.
— 3cheesewheel,

4
Dotyczy to tylko sytuacji, gdy nie obchodzi Cię kod powrotu uruchomionego polecenia.
— Izaak

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.