Все, что я действительно хочу сделать, это убедиться, что все в конвейере выполнено успешно, и назначить последний stdin переменной. Рассмотрим следующий упрощенный сценарий:
x=`exit 1|cat`
Когда я запускаю declare -a
, я вижу следующее:
declare -a PIPESTATUS='([0]="0")'
Мне нужен способ заметить exit 1
, поэтому я преобразовал его в это:
exit 1|cat|xargs -I {} x={}
И declare -a
дал мне:
declare -a PIPESTATUS='([0]="1" [1]="0" [2]="0")'
Это то, что я хотел, поэтому я попытался увидеть, что произойдет, если exit 1
не произойдет:
echo 1|cat|xargs -I {} x={}
Но это не удается:
xargs: x={}: No such file or directory
Есть ли способ присвоить xargs {}
x
? А как насчет других методов PIPESTATUS
работы и присвоения stdin переменной?
Примечание: эти примеры упрощены. На самом деле я не делаю exit 1
, echo 1
или cat
, но использовал эти команды для упрощения, чтобы мы могли сосредоточиться на моей конкретной проблеме.