Все, что я действительно хочу сделать, это убедиться, что все в конвейере успешно выполнено и назначить последний stdin переменной. Рассмотрим следующий упрощенных вниз сценарий:Использование xargs для назначения 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
, но использовал эти команды для упрощения, поэтому мы можем сосредоточиться на моей конкретной проблеме.
Я думал, что чтение может сделать что-то подобное. echo 1 | read x не работает. У вас есть пример? – User1