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

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

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 по существу всегда будет успешным.

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

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

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

 somecmd || ( echo it failed ; false ) 

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