我有两个简单的脚本:
#!/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
我做错了什么?这是否意味着如果我想使用它,最好先将它存储到某个变量?
答案 0 :(得分:1)
$?
扩展到最后一个语句的返回码。所以,零表示 last echo
语句(即echo "previous script return value: $?"
)成功。
?
($?)扩展到最近执行的前台管道的退出状态。
如果您需要多个地方的值,那么您始终可以存储在变量中:
./this_script_return_sth.sh
rc=$?
echo "previous script return value: $rc"
echo $rc
答案 1 :(得分:1)
$?
始终返回上次执行的shell命令的状态代码。
在您的情况下,脚本的最后一行:
echo $?
打印上次执行的命令的返回码:
echo "previous script return value: $?"
而不是剧本。
答案 2 :(得分:0)
$?返回执行的最后一个命令的退出状态。
每个命令都返回一个退出状态(有时称为返回状态或退出代码)。成功的命令返回0,而不成功的命令返回非零值,通常可以将其解释为错误代码。
在您的第一个脚本中,您将发送105作为退出代码,因此打印出来:
previous script return value: 105
下一行,echo $?
返回0
以成功执行最后一个命令。
您的脚本按预期工作。
有关详细信息,请参阅Exit status