[英]why in shell script, $? can't echo twice?
我有两个简单的脚本:
#!/bin/sh
echo "this script return sth"
exit 105
和:
#!/bin/sh
echo "this script will print last script return"
echo "first run a script"
./this_script_return_sth.sh
echo "previous script return value: $?"
echo $?
运行结果是:
this script will print last script return
first run a script
this script return sth
previous script return value: 105
0
我做错了什么吗? 这是否意味着如果我要使用它,最好先将其存储到某个变量中?
$?
扩展到最后一条语句的返回码。 因此,零表示最后一个 echo
语句(即echo "previous script return value: $?"
)成功。
?
($?)扩展为最近执行的前台管道的退出状态。
如果需要在多个位置使用该值,则始终可以将其存储在变量中:
./this_script_return_sth.sh
rc=$?
echo "previous script return value: $rc"
echo $rc
$?
总是返回最后执行的shell命令的状态码。
对于您的情况,脚本的最后一行:
echo $?
打印最后执行的命令的返回码:
echo "previous script return value: $?"
而不是脚本。
$? 返回最后执行的命令的退出状态。
每个命令都返回退出状态(有时称为返回状态或退出代码)。 成功的命令返回0,不成功的命令返回非零值,该值通常可以解释为错误代码。
在第一个脚本中,您要发送105作为退出代码,因此它显示为:
previous script return value: 105
下一行, echo $?
返回0
以成功执行上一条命令。
您的脚本按预期工作。
有关更多详细信息,请参阅退出状态
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.