Bash: запустить исполняемый файл, дающий хороший статус выхода

32

Я хочу запустить исполняемый файл в Linux, и независимо от состояния выхода, которое он возвращает, я хочу вернуть хорошее состояние выхода. (т.е. без ошибок.)

(Это потому, что я использую sh -exи хочу, чтобы скрипт продолжал работать, даже если одна (конкретная) команда завершилась неудачно.)

Рам Рахум
источник

Ответы:

47

Попробуйте это:

command || true

От man bash:

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

Приостановлено до дальнейшего уведомления.
источник
тоже хороший :)
voretaq7
1

Попробуйте (executable ; exit 0)или оберните его в сценарий оболочки, который всегда выходит за 0.

voretaq7
источник
1
В большинстве случаев это работает нормально, но настраивает подоболочку, поэтому, если, например, она (cd foo; exit 0)будет успешной, вы не попадете в «foo» впоследствии, так как ваш cwd возвращается к тому, в котором вы были ранее. Тем не менее, cd foo || trueоставит вас в "Foo", если он будет успешным.
Приостановлено до дальнейшего уведомления.
Хорошая мысль - если у вашего процесса есть дополнительные побочные эффекты (установка переменных среды, изменение каталогов и т. д.), это не сработает.
voretaq7