Все, что я действительно хочу сделать, это убедиться, что все в конвейере успешно выполнено, и присвоить последний стандартный переменный. Рассмотрим следующий тупой сценарий:
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
, но использовал эти команды для упрощения, чтобы мы могли сосредоточиться на моей конкретной проблеме.