shell脚本,根据“$?”的值执行不同的命令
时间: 2024-09-23 17:07:36 浏览: 30
在shell脚本中,`$?` 是一个特殊的变量,它包含了上一条命令(通常是最近的背景任务)的退出状态码(exit status)。这个状态码通常表示命令执行的成功与否:
1. **$0**:表示当前脚本文件的名称。
2. **$?**:如引用[2]所述,当脚本执行时,如果上一条命令(`if`语句中的命令)执行成功,其退出状态码为0;如果不成功,则 `$?` 的值将非零,用于条件判断以决定后续操作,比如执行错误处理或终止脚本。
下面是一个简单的示例,展示如何根据`$?`的值来执行不同的命令:
```bash
#!/bin/bash
echo "Running command..."
command_to_run some_argument # 假设command_to_run可能失败并返回非零退出状态
# 检查上一条命令的退出状态
if [ $? -eq 0 ]; then
echo "Command executed successfully."
else
echo "Command failed with error code: $?"
# 执行错误处理或修复措施
fi
# 根据退出状态执行不同操作
if [ $? -eq 0 ]; then
execute_success_action
else
execute_failure_action
fi
```
在这个例子中,`execute_success_action` 和 `execute_failure_action` 是两个可以定义的不同操作,取决于`command_to_run`是否成功执行。
阅读全文