Bash: запустіть виконуваний файл, який дає хороший статус виходу


32

Я хочу запустити виконуваний файл в Linux, і незалежно від стану виходу, який він повертає, я хочу повернути гарний статус виходу. (тобто помилки немає.)

(Це тому, що я використовую, sh -exі я хочу, щоб сценарій продовжував працювати, навіть якщо одна (конкретна) команда не працює.)

Відповіді:


47

Спробуйте:

command || true

Від man bash:

Оболонка не виходить, якщо команда, яка не вдається, є частиною списку команд, що знаходиться відразу через деякий час або до появи ключового слова, частина тесту, що відповідає зарезервованим словам if або elif, частина будь-якої команди, виконаної у && або ⎪⎪ списку, крім команда після остаточного && або ⎪⎪, будь-яка команда в конвеєрі, але остання, або якщо зворотне значення команди інвертується за допомогою !.


теж хороший :)
voretaq7

1

Спробуйте (executable ; exit 0)або альтернативно загорніть його в сценарій оболонки, який завжди виходить з 0.


1
Це працює в більшості випадків, але він налаштовує (cd foo; exit 0)нижню частину корпусу, тому, якщо, наприклад, буде успішно, згодом ви не опинитесь у "foo", оскільки ваш cwd повернеться до того, у якому ви були раніше. Однак cd foo || trueви залишите вас в "foo", якщо це буде успішно.
Призупинено до подальшого повідомлення.

хороший момент - якщо ваш процес має додаткові побічні ефекти (встановлення змінних оточуючих середовищ, зміна каталогів тощо), це не вийде.
voretaq7
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.