【发布时间】:2013-01-01 14:03:27
【问题描述】:
我正在尝试在 shell 脚本中创建一个函数,该函数接受一个命令并使用 eval 执行它,然后根据命令的成功执行一些后处理。不幸的是,代码的行为不像我预期的那样。这是我所拥有的:
#!/bin/sh
...
function run_cmd()
{
# $1 = build cmd
typeset cmd="$1"
typeset ret_code
eval $cmd
ret_code=$?
if [ $ret_code == 0 ]
then
# Process Success
else
# Process Failure
fi
}
run_cmd "xcodebuild -target \"blah\" -configuration Debug"
当命令 ($cmd) 成功时,它工作正常。当命令失败(例如编译错误)时,脚本会在我处理失败之前自动退出。有没有办法可以防止 eval 退出,或者有什么不同的方法可以让我实现我想要的行为?
【问题讨论】:
-
除非您的脚本中某处有
set -e,否则不应自动退出。如果你有它,set +e将禁用它。 -
sigh 我有
set -o errexit在调用者脚本的顶部徘徊。感谢您指出这一点。
标签: eval sh exit xcodebuild