在Shell脚本中,判断上一个命令是否成功执行通常是通过检查特殊变量$?的值来完成的。$?变量保存了上一个命令的退出状态。在Unix和Linux系统中,通常一个成功的命令返回0作为退出状态,而非零值表示出现了某种错误或异常情况。
因此,要判断上一个命令是否成功执行,你应该使用$? -eq 0这样的条件表达式。这里-eq是等于(equal)的意思,用于整数比较。
而-n和-z是用于测试字符串长度的条件表达式:
- -n "string":如果字符串的长度非零(即字符串不为空),则返回真。
- -z "string":如果字符串的长度为零(即字符串为空),则返回真。
由于$?是一个整数变量,不是字符串,所以使用-n或-z来测试$?是没有意义的。
下面是一个示例,展示了如何在Shell脚本中使用$?来判断上一个命令是否成功:
#!/bin/bash
# 执行一个命令
ls /nonexistentdirectory
# 检查上一个命令的退出状态
if [ $? -eq 0 ]; then
echo "上一个命令成功执行"
else
echo "上一个命令执行失败"
fi