在与脚本文件中的“ set -e”相同的错误停止bash

时间:2019-09-16 13:25:20

标签: linux bash shell

我有一个外部命令来生成一些bash命令,我们将其称为gen_commands,它会生成我需要与bash运行的命令列表,但是如果任何命令失败,我需要停止然后退出。为了避免错误,我将gen_commands的结果写到临时脚本文件中,该脚本文件在开始时附加了set -e

echo "#!/bin/bash" > tmp.sh
echo "set -e" >> tmp.sh
gen_commands >> tmp.sh
chmod +x tmp.sh
./tmp.sh
rm tmp.sh

如果我可以一行运行它,看起来会更干净:

gen_commands | bash

,但在这种情况下,bash会忽略错误。是否可以将bash配置为在出错时失败而无需编写脚本文件。

1 个答案:

答案 0 :(得分:1)

您可以使用命令组将多个命令的输出组合到一个流中:

{ echo "set -e"; gen_commands; } | bash

不过,您也可以简单地将-e作为选项传递给bash

gen_commands | bash -e

在手册页中:

  

选项

     

说明中记录的所有单字符外壳程序选项          外壳程序为 set 时,内置命令的          调用。