自学内容网 自学内容网

Linux中test命令详解

在 Unix 和类 Unix 系统中,`test` 命令用于检查文件属性或执行条件表达式,并根据测试的结果返回真或假。`test` 命令在 shell 脚本中广泛使用,尤其是在条件语句 `if`、`while`、`until` 中。

### 基本语法

```bash
test expression
```

如果 `expression` 为真,`test` 返回退出状态 0(成功),否则返回非零退出状态(失败)。

### 文件测试操作符

`test` 命令支持多种文件测试操作符,例如:

- `-b file`:检查文件是否存在且为块特殊文件。
- `-c file`:检查文件是否存在且为字符特殊文件。
- `-d file`:检查文件是否存在且为目录。
- `-e file`:检查文件是否存在。
- `-f file`:检查文件是否存在且为普通文件。
- `-g file`:检查文件是否存在且有组 ID。
- `-G file`:检查文件是否存在且属于当前用户的组。
- `-h file`:检查文件是否存在且为符号链接。
- `-k file`:检查文件是否存在且被设置粘滞位。
- `-p file`:检查文件是否存在且为命名管道。
- `-r file`:检查文件是否存在且可读。
- `-s file`:检查文件是否存在且不为空。
- `-u file`:检查文件是否存在且有设置用户 ID。
- `-w file`:检查文件是否存在且可写。
- `-x file`:检查文件是否存在且可执行。
- `-O file`:检查文件是否存在且属于当前用户。
- `-S file`:检查文件是否存在且为套接字。

### 字符串测试操作符

- `-s string`:检查字符串非空。
- `-n string`:检查字符串非空。
- `string1 = string2`:检查两个字符串是否相等。
- `string1 != string2`:检查两个字符串是否不相等。
- `string1 < string2`:检查第一个字符串是否在字典顺序上小于第二个字符串。
- `string1 > string2`:检查第一个字符串是否在字典顺序上大于第二个字符串。

### 数值测试操作符

- `integer1 -eq integer2`:检查两个整数是否相等。
- `integer1 -ne integer2`:检查两个整数是否不相等。
- `integer1 -lt integer2`:检查第一个整数是否小于第二个整数。
- `integer1 -le integer2`:检查第一个整数是否小于或等于第二个整数。
- `integer1 -gt integer2`:检查第一个整数是否大于第二个整数。
- `integer1 -ge integer2`:检查第一个整数是否大于或等于第二个整数。

### 逻辑操作符

- `! expr`:检查 `expr` 是否为假。
- `expr1 -a expr2`:检查 `expr1` 和 `expr2` 是否都为真。
- `expr1 -o expr2`:检查 `expr1` 或 `expr2` 是否至少有一个为真。

### 示例

```bash
# 检查文件是否存在
if test -e filename; then
    echo "File exists."
else
    echo "File does not exist."
fi

# 检查字符串是否非空
if test -n "$string"; then
    echo "String is not empty."
fi

# 比较两个整数
if test 10 -gt 5; then
    echo "10 is greater than 5."
fi
```

请注意,`test` 命令在现代 shell 脚本中通常被 `[` 命令替换,因为 `[` 是 `test` 的一个别名,并且具有相同的功能。两者可以互换使用。
 


原文地址:https://blog.csdn.net/weixin_62594908/article/details/142742503

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!