Я хотел бы иметь возможность создать функцию bash, которая может читать код выхода команды перед трубой. Я не уверен, что есть доступ к этому.Получить код выхода из последнего канала (stdin)
echo "1" | grep 2
возвращает код 1 статусecho "1" | grep 1
возвращает код 0 статус
Теперь я хотел бы добавить третью команду для чтения статуса, с трубкой:
echo "1" | grep 2 | echo $?
будет эхо «0», даже если код состояния равен 1.
Я знаю, что могу использовать echo "1" | grep 2 && echo "0" || echo "1"
, но я бы предпочел написать его с помощью трубы.
ли они в любом случае, чтобы сделать это (это было бы еще лучше, если бы он работал на большинстве оболочек, как Баш, ш, и ЗШ)
Зачем вам использовать трубку для этого? 'echo" 1 "| grep 2, echo $? 'будет работать нормально. – Yannoff
Потому что мне также может понадобиться то, что происходит от stdin. Тем не менее, я предпочитаю ваше решение, чем одно из @mattinbits – edi9999
Звучит как проблема XY. Зачем вам нужен статус от * внутри * трубопровода? – chepner