我有一个外部命令来生成一些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配置为在出错时失败而无需编写脚本文件。
答案 0 :(得分:1)
您可以使用命令组将多个命令的输出组合到一个流中:
{ echo "set -e"; gen_commands; } | bash
不过,您也可以简单地将-e
作为选项传递给bash
:
gen_commands | bash -e
在手册页中:
选项
说明中记录的所有单字符外壳程序选项 外壳程序为 set 时,内置命令的 调用。