在失败时设置变量并在/ bin / sh脚本中管道输出

时间:2015-06-03 11:44:30

标签: shell sh

如何在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

1 个答案:

答案 0 :(得分:-1)

在修改变量之前导出变量可能会解决您的问题。

3, 6, 9, 2, 7, 1, 8, 5, 10, 4

在旁注中,您可以使用export FAILURE { something || FAILURE=1 } | something-else 而不是使用cat来管道输出。