如何在FAILED=1
失败时设置变量(some-command
),但仍能在do-something-with-output-anyway
处理其输出?
我有这个:
FAILED=0
tmp="$(mktemp)"
some-command >>"$tmp" || FAILED=1
cat "$tmp" | do-something-with-output-anyway
rm "$tmp"
但如何在一个命令中完成?这不起作用:
FAILED=0
{ some-command || FAILED=1 ; } | do-something-with-output-anyway
...因为FAILED=1
只在{}
子shell中设置(我认为?)。
@fedorqui建议编辑:即:
sh -c 'echo bam ; exit 1' || FAILED=1 | sed 's/^/x/' && echo $FAILED
应输出:
xbam
1
答案 0 :(得分:-1)
在修改变量之前导出变量可能会解决您的问题。
3, 6, 9, 2, 7, 1, 8, 5, 10, 4
在旁注中,您可以使用export FAILURE
{
something || FAILURE=1
} | something-else
而不是使用cat
来管道输出。