私が本当にやりたいことは、パイプライン内のすべてが成功したことを確認し、最後の 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
作業を行い、標準入力を変数に割り当てる他の方法はどうですか?
注: これらの例は単純化されています。exit 1
、echo 1
または を実際に行っているわけではありませんがcat
、これらのコマンドを使用して単純化して、特定の問題に集中できるようにしました。