Bash: Uruchom plik wykonywalny, który daje dobry status wyjścia


32

Chcę uruchomić plik wykonywalny w systemie Linux i niezależnie od zwracanego statusu wyjścia, chcę zwrócić dobry status wyjścia. (tj. bez błędu.)

(Jest tak, ponieważ używam sh -exi chcę, aby skrypt nadal działał, nawet jeśli jedno (określone) polecenie zawiedzie.)

Odpowiedzi:


47

Wypróbuj to:

command || true

Od man bash:

Powłoka nie kończy działania, jeśli polecenie, które się nie powiedzie, jest częścią listy poleceń bezpośrednio po słowie kluczowym chwilę lub do, część testu po słowach zastrzeżonych if lub elif, część dowolnego polecenia wykonanego na liście && lub ⎪⎪, z wyjątkiem polecenie następujące po ostatnim && lub ⎪⎪, dowolne polecenie w potoku oprócz ostatniego lub jeśli zwracana wartość polecenia jest odwracana za pomocą!


też dobry :)
voretaq7

1

Spróbuj (executable ; exit 0)lub alternatywnie zapakuj go w skrypt powłoki, który zawsze kończy 0.


1
Działa to dobrze w większości przypadków, ale konfiguruje podpowłokę, więc jeśli na przykład (cd foo; exit 0)się powiedzie, nie skończysz w „foo”, ponieważ twój cwd powraca do tego, w którym byłeś poprzednio. Jednak cd foo || truepozostawi cię w „foo”, jeśli się powiedzie.
Wstrzymano do odwołania.

dobra uwaga - jeśli twój proces ma dodatkowe skutki uboczne (ustawienie zmiennych środowiskowych, zmiana katalogów itp.), to nie zadziała.
voretaq7
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.