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.)

Ram Rachum
źródło

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ą!

Wstrzymano do odwołania.
źródło
też dobry :)
voretaq7
1

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

voretaq7
źródło
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