概述
test 命令评估给定表达式,如果结果为真则返回退出状态 0,如果为假则返回 1。它主要用于 shell 脚本中的条件执行,如 `if` 和 `while` 语句。`[` 命令是 `test` 命令的另一种形式,而 `[[` 在 Bash/Ksh/Zsh 中提供了扩展功能。
主要功能
- 检查文件类型和属性
- 比较字符串值
- 比较整数值
- 逻辑运算(AND、OR、NOT)
主要选项
test 命令使用各种一元和二元运算符来评估条件表达式。
文件属性检查
字符串比较
整数比较
逻辑运算符
生成的命令:
请尝试组合命令。
描述:
`test` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
使用 test 命令进行各种条件表达式求值的示例。
检查文件是否存在
if test -e /etc/passwd; then echo "/etc/passwd 文件存在。"; fi
检查 `/etc/passwd` 文件是否存在。
检查是否为目录
if test -d /tmp; then echo "/tmp 是一个目录。"; fi
检查 `/tmp` 是否为目录。
字符串比较
MY_VAR="hello"
if test "$MY_VAR" = "hello"; then echo "变量的值是 hello。"; fi
检查变量 `MY_VAR` 的值是否等于 'hello'。
整数比较
COUNT=15
if test "$COUNT" -gt 10; then echo "COUNT 大于 10。"; fi
检查变量 `COUNT` 的值是否大于 10。
逻辑 AND 运算
touch file.txt
if test -f file.txt -a -s file.txt; then echo "file.txt 存在且非空。"; fi
rm file.txt
检查 `file.txt` 是否存在且非空。
使用 `[` 代替 test
if [ -f /etc/hosts ]; then echo "/etc/hosts 文件存在。"; fi
`test` 命令可以用 `[` 替换。此时需要用 `]` 闭合。
提示与注意事项
使用 test 命令时的有用提示和注意事项。
主要提示
- `[` 命令与 `test` 命令相同,最后需要用 `]` 闭合。`[` 和 `]` 被视为独立的参数,因此必须有空格。
- `[[` 命令仅在 Bash、Ksh 和 Zsh 中支持,并提供更强大的功能(如正则表达式、空格处理等)。在 `[[` 内部,即使不引用变量也更安全。
- 使用变量时,最好始终用双引号括起来(例如:`test "$VAR" = "value"`)。这可以防止变量为空或包含空格时可能出现的错误。
- 进行整数比较时使用 `-eq`、`-ne`、`-gt`、`-lt`、`-ge`、`-le`,进行字符串比较时使用 `=`、`!=`、`-z`、`-n`。混淆使用可能导致意外结果。