我知道在执行命令后返回代码将包含在$?
中,但是$?
在执行脚本后意味着什么?该脚本中最后一个命令的返回码?
我可以判断一个脚本是否已经从头到尾被执行并且没有被某些意外的系统停止或其他事件中断?
如果我有一个类似下面的脚本,
Command A;
if [ $? -eq 0]
then
echo "OK" >> log
else
echo "failed" >> log
fi
并且系统在A
运行时暂停,我会在该日志文件中找到什么? “好”,“失败”或什么都没有?
答案 0 :(得分:6)
是,或exit
之后传递的值,例如exit 31
。
并非在其他脚本中采取措施使其明确。
答案 1 :(得分:4)
$?读取最后执行的命令的退出状态。函数返回后,$?给出函数中执行的最后一个命令的退出状态。这是Bash为函数提供“返回值”的方式。
#!/bin/bash
echo hello
echo $? # Exit status 0 returned because command executed successfully.
lskdf # Unrecognized command.
echo $? # Non-zero exit status returned because command failed to execute.
echo
exit 113 # Will return 113 to shell.
# To verify this, type "echo $?" after script terminates.
# By convention, an 'exit 0' indicates success,
#+ while a non-zero exit value means an error or anomalous condition
答案 2 :(得分:0)
脚本的返回码确实是最后执行的命令的返回码,有些命令允许你在任何时候完成执行并随意设置返回码;那些是exit
用于脚本而return
用于函数,但在这两种情况下如果省略参数,它们只会使用上一个命令的返回码。