Пройти через код состояния выхода после использования ||

Я хочу написать псевдоним, что-то вроде:

alias baz="false || echo bar" 

(На самом деле это false , это команда, которая может выйти из строя). Тем не менее, я хочу передать неудачный код состояния до следующего invoker. Другими словами, вот текущее поведение:

 $ false; echo $? 1 $ false || echo foo; echo $? 0 

Я хочу сделать другую операцию, которая имеет одинаковое поведение во всех отношениях как false || echo foo false || echo foo , за исключением случаев, когда я выполняю echo $? он вернется 1 .

Примечание. Я ожидаю, что бит echo foo по существу всегда будет успешным.

One Solution collect form web for “Пройти через код состояния выхода после использования ||”

Функция сохранения возвращаемого значения команды не так сложна:

 f() { some-command-that-can-fail retval=$? if [ "$retval" != 0 ] ; then echo the command failed fi return $retval } 

Если вам неинтересно точное возвращаемое значение, но просто нужно получить ненулевой код возврата, это будет работать:

 somecmd || ( echo it failed ; false ) 

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

  • Использование переменной с командой rename
  • Как разбить массив Bash на аргументы
  • Скрипт для удаления определенных элементов span из файла HTML
  • Получение истинного абсолютного пути сценария в / bin / sh
  • Почему полный путь к / usr / bin / time влияет на вывод?
  • ksh + удалить номер из строки
  • Как управлять фоновой подоболочкой?
  • Bash Script - ffmpeg не вызывается, как ожидалось
  • Почему двойные кавычки и backquotes в сценарии оболочки?
  • Добавление переменных с кавычками и пробелом в bash
  • Как использовать printf для отображения результатов расчета?
  • Linux и Unix - лучшая ОС в мире.