Zum*_*rio 1 bash if-statement exit-code
如果我直接使用单个命令对退出代码进行简单测试:
[user@localhost ~]$ date
Tue Sep 8 14:00:11 CEST 2020
[user@localhost ~]$ echo $?
0
[user@localhost ~]$ dat
bash: dat: command not found...
[user@localhost ~]$ echo $?
127
Run Code Online (Sandbox Code Playgroud)
但是,如果我想将它们放入 if 语句中,我发现对于退出代码 0,输出正常,但是,对于“命令未找到”代码(应该是 127),它返回“1”。
[user@localhost ~]$ date
Tue Sep 8 14:02:18 CEST 2020
[user@localhost ~]$ if [ $? -eq 0 ]; then echo "Success: $?"; else echo "Failure: $?" >&2; fi
Success: 0
[user@localhost ~]$ dat
bash: dat: command not found...
[user@localhost ~]$ if [ $? -eq 0 ]; then echo "Success: $?"; else echo "Failure: $?" >&2; fi
Failure: 1
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
如果您想捕获并打印每个命令的退出代码,我不会费心将其保存在变量中。仅当您稍后再次需要此退出代码,或者存在一些您不认为是错误的非零退出代码时,才有必要执行此操作。
相反,我会这样做:
替换您现有的
command_to_verify
Run Code Online (Sandbox Code Playgroud)
经过
if command_to_verify
then
echo Success
else
echo Failure: $?
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5547 次 |
| 最近记录: |