90 lines
1.7 KiB
Markdown
90 lines
1.7 KiB
Markdown
|
在 Linux 上,通过命令行执行命令时,命令的退出状态码(exit status)存储在特殊的环境变量 `$?` 中。退出状态码为 0 表示命令成功执行,非 0 表示命令执行失败。
|
|||
|
|
|||
|
如果你希望在执行命令后查看其退出状态码,可以使用如下方法:
|
|||
|
|
|||
|
1. **执行命令**:
|
|||
|
|
|||
|
```
|
|||
|
your_command_here
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2. **查看退出状态码**:
|
|||
|
|
|||
|
```
|
|||
|
echo $?
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
例如:
|
|||
|
|
|||
|
```
|
|||
|
ls /some/directory
|
|||
|
echo $?
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
如果目录存在且命令成功,`echo $?` 将输出 `0`。如果目录不存在或发生错误,`echo $?` 将输出一个非零值,例如 `2`。
|
|||
|
|
|||
|
### 示例
|
|||
|
|
|||
|
假设你运行以下命令来列出一个不存在的目录:
|
|||
|
|
|||
|
```
|
|||
|
ls /nonexistent_directory
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
然后你可以查看退出状态码:
|
|||
|
|
|||
|
```
|
|||
|
echo $?
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
假设目录 `/nonexistent_directory` 不存在,`ls` 命令将失败,`echo $?` 输出:
|
|||
|
|
|||
|
```
|
|||
|
2
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
这表明 `ls` 命令未成功执行。
|
|||
|
|
|||
|
### 常见的退出状态码
|
|||
|
|
|||
|
- `0`:命令成功执行。
|
|||
|
- `1`:一般性错误,例如权限问题。
|
|||
|
- `2`:误用命令内建功能。
|
|||
|
- `127`:命令未找到。
|
|||
|
|
|||
|
### 示例脚本
|
|||
|
|
|||
|
你可以将这些命令放入一个脚本中,以便更方便地查看退出状态码:
|
|||
|
|
|||
|
```
|
|||
|
#!/bin/bash
|
|||
|
|
|||
|
your_command_here
|
|||
|
status=$?
|
|||
|
|
|||
|
if [ $status -eq 0 ]; then
|
|||
|
echo "Command succeeded"
|
|||
|
else
|
|||
|
echo "Command failed with exit status $status"
|
|||
|
fi
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
这个脚本首先执行 `your_command_here`,然后存储退出状态码,并根据状态码输出相应的消息。
|
|||
|
|
|||
|
### 总结
|
|||
|
|
|||
|
通过使用 `$?` 变量,你可以轻松地获取上一个命令的退出状态码,并根据该状态码执行相应的操作。这在编写脚本时特别有用,可以帮助你处理错误情况并进行调试。
|