我正在尝试编写一个shell脚本,该脚本本质上在另一个脚本中调用了一堆函数。
该脚本如下所示:
#!/bin/bash
set -e
function cleanup() {
exitStatus=$?
if [ $exitStatus -ne 0 ]; then
rm -rf /tmp/alpha*
fi
exit $exitStatus
}
trap cleanup ERR
VAR1="test"
. /home/common/scripts/utils.sh
echo "Executing function1"
function1 $VAR1
echo "Executing function2"
function2 $VAR1
exit $?
我的问题是,我是否需要设置-e以及trap以确保我的脚本在此处很健壮,或者仅使用trap就足够了。
第二:如果我在此脚本中设置了-e,那么是否也需要在
utils.sh
中设置-e,以确保该函数在该脚本中正确执行,或者该脚本中的-e可以解决该问题?
最佳答案
如果出现错误,set -e
只会立即退出脚本,而不是继续。是否使用它取决于您想要的行为。trap
只是处理退出时的错误,因此,如果您担心健壮性,则将两者结合起来可能很好。
如果您还希望它们在出错时立即终止,则应在每个子脚本中放置set -e
。
关于bash - 在shell脚本中使用set -e和traps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43483706/