我有一个示例 shell 方法:
- 经过某种处理后返回一个值。
- 如果发生任何错误,则使用退出代码退出。
示例脚本如下:
a.sh
#!/bin/bash
test(){ # test method
if [ $1 == 2 ]; then # the condition for checking
exit 500 # exit with exit code
else
echo $1 # do some business logic here and return the value
fi
}
我在检查错误代码时遇到问题。为了使用这个测试方法,我有另一个示例脚本。
b.sh
#!/bin/bash
source a.sh
val=`test $1` # call the test method
if [ $? == 500 ]; then # check the value
echo "here is an error" # error occurs
else
echo $val # no error, do something with returned value
fi
以下是输出:
输入: ./b.sh 10
输出: 10
预期输出: 10
输入: ./b.sh 2
输出:
预期输出:这是一个错误
我认为 b.sh 中存在问题,因为 if [ $? == 500];那么
总是假。有什么方法可以使这个条件为真或者获取错误代码吗?
最佳答案
执行此操作的惯用方法是:
if val=$(test "$1"); then
echo "$val"
else
echo "An error occurred."
fi
if
语句测试其后面的命令(或管道)的状态,并执行指示成功的状态的 then
分支。您唯一需要显式检查 $?
值的情况是实用程序返回不同故障状态值(并记录它们的含义)的罕见情况。
许多人似乎认为 [ ... ]
和其他类似的东西是 if
命令语法的一部分。他们不是;它们只是名称为标点符号的命令(或内置命令)。您可以使用任何命令,甚至可以连续使用多个命令;在后一种情况下,检查的状态将是最后一个命令的状态。
关于linux - 检查返回值的 shell 方法的错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518501/