Linux test 命令

Linux test 命令

Linux test 命令

Linux 命令大全

test 是 Linux/Unix 系统中一个用于条件判断的内置命令,主要用于 shell 脚本中进行各种测试和比较操作。它可以检查文件属性、比较字符串和数值,是编写 shell 脚本时不可或缺的工具。

基本语法

test EXPRESSION

# 或者使用方括号格式(更常用)

[ EXPRESSION ]

注意:使用方括号格式时,表达式与方括号之间必须有空格,即 [空格EXPRESSION空格]

主要功能分类

1. 文件测试

检查文件或目录的各种属性:

表达式

含义

-e 文件

文件是否存在

-f 文件

是普通文件(不是目录或设备文件)

-d 文件

是目录

-s 文件

文件大小不为空

-r 文件

文件可读

-w 文件

文件可写

-x 文件

文件可执行

-L 文件

文件是符号链接

示例:

实例

if [ -f "/etc/passwd" ]; then

echo "这是一个普通文件"

fi

2. 字符串比较

比较两个字符串的关系:

表达式

含义

-z "字符串"

字符串长度为0

-n "字符串"

字符串长度不为0

"串1" = "串2"

字符串相等

"串1" != "串2"

字符串不相等

示例:

实例

read -p "输入用户名: " username

if [ -z "$username" ]; then

echo "用户名不能为空"

fi

3. 数值比较

比较两个整数的大小关系:

表达式

含义

n1 -eq n2

等于 (equal)

n1 -ne n2

不等于 (not equal)

n1 -gt n2

大于 (greater than)

n1 -ge n2

大于等于

n1 -lt n2

小于 (less than)

n1 -le n2

小于等于

示例:

实例

if [ $(id -u) -eq 0 ]; then

echo "当前是root用户"

fi

4. 逻辑运算符

组合多个测试条件:

运算符

含义

示例

!

逻辑非

[ ! -f file ]

-a

逻辑与

[ -f file -a -r file ]

-o

逻辑或

[ -d dir -o -f file ]

现代推荐写法(使用 && 和 ||):

实例

[ -f file ] && [ -r file ] # 文件存在且可读

[ -d dir ] || [ -f file ] # 是目录或者是文件

高级用法

1. 复合条件判断

实例

if [ -f "/etc/passwd" -a -r "/etc/passwd" ]; then

echo "文件存在且可读"

fi

2. 与 if 语句结合

实例

if [ "$1" = "start" ]; then

echo "启动服务..."

elif [ "$1" = "stop" ]; then

echo "停止服务..."

else

echo "无效参数"

fi

3. 在变量赋值中使用

实例

[ -z "$PATH" ] && PATH="/usr/bin:/bin" # 如果PATH为空则设置默认值

常见错误与注意事项

空格问题:

实例

[ "$var" = "value" ] # 正确

[ "$var"="value" ] # 错误,缺少空格

字符串变量引号:

实例

[ -n "$var" ] # 正确,防止变量为空时报错

[ -n $var ] # 当$var为空时会报错

数值比较与字符串比较:

实例

[ "10" -gt "2" ] # 正确,数值比较

[ "10" > "2" ] # 错误,这是字符串比较(按字典序)

文件测试路径:

实例

[ -f "$file" ] # 正确,变量用引号包裹

[ -f $file ] # 当路径含空格时会出错

实际应用示例

示例1:检查备份目录是否存在

实例

backup_dir="/var/backups"

if [ ! -d "$backup_dir" ]; then

mkdir -p "$backup_dir"

echo "创建备份目录: $backup_dir"

fi

示例2:验证用户输入

实例

read -p "请输入年龄: " age

if [ "$age" -lt 0 -o "$age" -gt 120 ]; then

echo "无效的年龄输入"

exit 1

fi

示例3:服务启动脚本

实例

#!/bin/bash

if [ "$1" = "start" ]; then

if [ -f "/var/run/service.pid" ]; then

echo "服务已在运行"

else

echo "启动服务..."

# 启动命令

fi

elif [ "$1" = "stop" ]; then

# 停止逻辑

else

echo "用法: $0 {start|stop}"

fi

总结

test 命令是 shell 脚本编程中的基础工具,掌握它可以:

实现条件分支逻辑

验证文件和目录状态

比较字符串和数值

构建复杂的判断条件

记住关键点:

方括号格式更常用但要注意空格

变量引用要加双引号

区分字符串比较和数值比较运算符

使用现代 && 和 || 替代 -a 和 -o

Linux 命令大全

相关数据

掩埋的淤泥根
365bet体坛即时比分

掩埋的淤泥根

📅 10-05 👁️ 5696
刀光剑影的解释
365bet体坛即时比分

刀光剑影的解释

📅 11-15 👁️ 1320