我在我的项目中使用bash shell脚本。
主脚本调用了很多子脚本,但有时子脚本有错误。我想脚本立即停止。
我发现-errexit
选项。它将为我工作。
有限制。我不能编辑子脚本。另外,我不想碰执行线。
下面是例子。
#!/bin/bash
# do something
exec bash test.sh
test.sh
#!/bin/bash
cat as.txt # error
cat ab.txt # run
cat ab.txt
不运行。
我知道,exex bash -e test.sh
会运行。但真实的的项目代码是这样的,触摸exec线是危险的。
exec "$@"
我不知道什么是$@
。
如果我在'do something'中写入set -e
,它不会应用于子进程(test.sh)。
我可以改变默认的选项脚本,如~/.bashrc
?我如何应用shell选项的子进程?
请帮帮我!
2条答案
按热度按时间dpiehjr41#
这就是解决方案。
这个答案帮助了我。
https://unix.stackexchange.com/questions/387186/are-all-the-shell-options-not-inherited-by-scripts
k75qkfdt2#
我使用了一个类似的例子,当cat命令没有成功时,带有do something的脚本立即退出。
doSome.sh
test.sh
输出:
也许你不需要使用
set -e
?编辑:
文件已创建:
当用
cat
操作替换touch newfile
时,它确实会继续运行,问题仍然存在。一个可行的解决方案可能是在每行的基础上添加错误处理:
test.sh