Как получить код возврата команды в выражении короткого замыкания
После выражения:
command1 | command2
Я могу получить первые команды выхода из состояния через ${PIPESTATUS[0]}
Есть ли эквивалент для выражений в форме:
command3 && command4 || command5
Я хотел бы получить код выхода команды 3:
command3 && command4 || command5
retval=${SHORTCIRCUIT[0]} # how to get this value?
Желательно без создания временных файлов.
1 ответ
Решение
Разработка подхода Devnull приводит к
{ c3=0; command3 || c3=$? && false; } && command4 || command5
echo $c3
, Потому что каждый command
можно заменить на
{ c=0; command || c=$? && false; }
(при условии, что c
изначально не устанавливается, если выполняется условно), это легко расширяется.