bash:如何检测前一个命令是否失败,然后从函数内部退出?

bash:如何检测前一个命令是否失败,然后从函数内部退出?

我正在尝试在 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"

相关内容