Эквивалент отказа от работы в командной строке

Есть ли подобная опция в командной строке, соответствующая pipefail в bash?

Или любой другой способ получения ненулевого состояния, если одна из команд в трубе выходит из строя (но не выходит на него, который устанавливает -e).

Чтобы сделать это более ясным, вот пример того, чего я хочу достичь:

В образце отладки makefile мое правило выглядит так:

set -o pipefail; gcc -Wall $$f.c -o $$f 2>&1 | tee err; if [ $$? -ne 0 ]; then vim -o $$f.c err; ./$$f; fi;

В основном он запускает файл ошибки и исходный файл при ошибке и запускает программы, когда нет ошибки. Сохраняет мне ввод текста. Над snippet хорошо работает на bash, но моя новая система Ubunty использует тире, которая, похоже, не поддерживает опцию pipefail.

Мне в основном нужен статус FAILURE, если первая часть команды ниже:

gcc -Wall $$f.c -o $$f 2>&1 | tee err

чтобы я мог использовать это для оператора IF.

Есть ли альтернативные способы его достижения?

Спасибо!

Ответ 1

Ответ "запаса" для реализаций POSIX для PIPESTATUS/pipefail представлен в comp.unix.shell FAQ Q11