繁体   English   中英

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

[英]Stop bash on error same as “set -e” in script file

我有一个外部命令来生成一些bash命令,我们将其gen_commands ,它会生成一个需要使用bash运行的命令列表,但是如果任何命令失败,则需要停止并退出。 为了在错误时停止它,我将gen_commands的结果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配置为在失败时失败而无需编写脚本文件。

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

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

但是,您也可以简单地通过-e作为bash的选项:

gen_commands | bash -e

从手册页:

OPTIONS

set内置命令的描述中记录的所有单字符外壳程序选项都可以在调用外壳程序时用作选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM