Linux检查一个命令是否执行成功

本文介绍了一个简单的bash脚本技巧,通过 $? 变量来判断前一个命令是否执行成功,并给出相应的反馈信息。这对于自动化脚本中确保每一步操作正确执行非常有用。
检查命令是否执行成功可以用$?来做到,如下例子:

#!/bin/bash
ls

RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo OK
else
echo FAIL
fi
Linux 系统中,`$?` 是一个特殊的 shell 变量,用于存储上一条命令的退出状态码。通过检查 `$?` 的值,可以判断命令是否成功执行。 - 当命令成功执行时,其退出状态码为 `0`。 - 如果命令执行失败,则退出状态码为非零值(通常为 1,但具体取决于命令)。 ### 使用 `$?` 检查命令执行状态 可以直接使用 `echo $?` 来查看上一条命令的退出状态码。例如: ```bash ls /nonexistent_directory echo $? ``` 如果 `/nonexistent_directory` 不存在,`ls` 命令会失败,输出类似于 `No such file or directory`,并且 `echo $?` 将显示一个非零值(通常是 `2`)[^4]。 ### 在脚本中使用 `$?` 可以在 shell 脚本中结合条件语句来使用 `$?`,以根据命令成功或失败采取不同的操作。例如: ```bash #!/bin/bash ls /some_directory if [ $? -eq 0 ]; then echo "命令执行成功" else echo "命令执行失败" fi ``` 在此示例中,`if [ $? -eq 0 ]` 判断上一条命令是否成功执行,并据此输出相应的结果[^2]。 ### 使用逻辑操作符简化流程控制 除了直接检查 `$?` 外,还可以使用逻辑操作符 `&&` 和 `||` 来简化流程控制: - `&&`:仅当前一条命令成功执行时(退出状态码为 `0`),才会执行后续命令。 - `||`:仅当前一条命令执行失败时(退出状态码非零),才会执行后续命令。 例如: ```bash mkdir new_directory && echo "目录创建成功" || echo "目录创建失败" ``` 如果 `mkdir` 成功创建目录,则会执行 `echo "目录创建成功"`;如果创建失败(如目录已存在),则会执行 `echo "目录创建失败"`[^3]。 ### 查看错误信息 如果需要了解具体的错误原因,可以使用 `perror` 工具来解析错误代码。例如: ```bash ls /nonexistent_directory perror $? ``` 这将显示与错误代码对应的描述性信息,帮助进一步诊断问题[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值