如何将退出结果传递给函数

如何将退出结果传递给函数

我正在尝试减少脚本中的代码量。我想要做的是将命令的结果传递给一个函数,该函数会告诉我命令是否通过或失败,然后如果失败则退出。

这是接收函数:

function SanityChk() {
    if [ $1 != "0"]; then
        echo "FAIL"
    else
        echo "PASS"
    fi
}

我知道我可以运行命令然后只需将 $? 传回来......

sudo cp test.txt test.dat
SanityCheck $?

但是我想在一行中完成。我一直尝试使用“eval”,因此结果是这样的:

SanityCheck eval$(sudo cp test.txt test.dat)

但它似乎返回了除结果之外的任何内容。

所以问题是我怎样才能获得退出结果?

答案1

您可以只传递命令和所​​有参数:

SanityCheck () {
    if "$@"; then
        echo yes
    else
        echo no
    fi
}

SanityCheck sudo cp test.txt test.dat

或者执行该函数立即地运行该命令后:$?是的退出状态最后一个命令

SanityCheck () {
    if (($? == 0)); then
        echo yes
    else
        echo no
    fi
}

sudo cp test.txt test.dat
SanityCheck 

答案2

只需将退出状态分配给变量:

some_command
status=$?
  

然后你就可以做你想做的事了$status

相关内容