gpt4 book ai didi

linux - 从捕获输出的函数中退出 bash 脚本

转载 作者:太空狗 更新时间:2023-10-29 11:38:39 24 4
gpt4 key购买 nike

我想在出错时完全终止/退出 bash shell 脚本,但使用函数 error 让我在终止前显示调试输出。现在我遇到的问题是,如果函数的输出是通过反引号或 $()< 捕获的,错误函数中的 exit 1 语句将终止 shell 脚本.

这是我的示例脚本:

    #!/bin/bash

function error ()
{
echo "An error has occured: $1"
exit 1
}
function do_sth ()
{
if [ $1 -eq 0 ]; then
error "First param must be greater than 0!"
else
echo "OK!"
fi
}

RESULT=`do_sth 0`

echo "This line should never be printed"

如何在 error() 函数中立即终止脚本?

最佳答案

command substitution 的问题即,启动子 shell 以执行 do_sthexit 1 然后终止这个子 shell 而不是主 bash。

您可以通过附加 || 来解决这个问题exit $?,它以命令替换的退出代码退出

RESULT=`do_sth 0` || exit $?

如果你想显示错误信息,将它重定向到 stderr

echo "An error has occured: $1" >&2

关于linux - 从捕获输出的函数中退出 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14378469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com