我有以下unix shell脚本,其中我有两个整数 变量即a和b。
如果a大于或等于b,则shell脚本应退出并返回0 。
否则它应退出并返回1 。
脚本:ConditionTest.sh
#!/bin/sh
a=10
b=20
if [ $a -ge $b ]
then
exit 0
else
exit 1
fi
....
....
....
运行脚本:
$ ./ConditionTest.sh
$
注意:执行文件后我没有收到任何返回值。
答案 0 :(得分:3)
shell将最后一个命令的退出状态放在变量?
中。
你可以简单地检查它:
mycommand
echo $?
...或者您可以根据其价值使用它来做其他事情:
mycommand && echo "ok" || echo "failed"
或者,更具可读性:
if mycommand; then
# exit with 0
echo "ok"
else
# exit with non-zero
echo "failed"
if
答案 1 :(得分:3)
你的脚本看起来很好;你做的一切都很正确。
#!/bin/sh
a=10
b=20
if [ $a -ge $b ]
then
exit 0
else
exit 1
fi
所以我们在这里运行它并检查返回值:
$ sh test.sh
$ echo $?
1
$
10不大于或等于20.
测试它的另一种方法是这样的:
$ sh test.sh && echo "succeeded" || echo "failed"
failed
如评论中所述,您还应该引用您的变量:
if [ $a -ge $b ]
应该是:
if [ "$a" -ge "$b" ]
答案 2 :(得分:0)
要添加到之前的答案,您应该了解的关键想法是每个程序在退出时都会提供一个数字。该数字用作报告命令是否已成功完成其操作的方法,如果没有,则表示发生了什么类型的错误。
如上所述,可以使用$?
访问最后执行的命令的退出代码。
您的脚本没有打印的原因是您的脚本返回1,但是不打印命令的退出代码。 (这类似于调用函数,你从函数中得到一个返回值,但它没有打印出来)