我正在尝试在 bash 脚本中编写一个函数,该函数接受命令作为参数,执行命令 - 并且 - 如果命令非零退出,则中止脚本:
文件:command_wrapper.sh
#!/usr/bin/env bash
function exec_cmd() {
local command=${1}
$command || exit # run the command if $? is 1 exit
if [[ $? -eq 1 ]] # AGAIN if $? is 1 exit
then
echo "command failed"
exit
fi
return 0
}
exec_cmd "grep -R somsomeoemoem ." # call the function, passing a
# command that will exit with 1
echo "rest of script running"
叫它:
% ./command_wrapper.sh
./command_wrapper.sh:exec_cmd "grep -R somethingyouwillneverfind ."
rest of script running
使用非零退出的命令运行函数后,脚本将继续执行 - 为什么?
如何让此命令在$command
失败时错误退出?
答案1
您的功能按设计工作,但问题是您的假设不正确。grep -R somsomeoemoem .
不会错误退出。
尝试使用此命令查看该函数是否退出:
exec_cmd "false"