当前位置:首页>Linux>Linux自学第21天

Linux自学第21天

  • 2026-09-02 17:22:33
Linux自学第21天
今天学习Shell 中的 test 命令
语法
test EXPRESSION# 或[ EXPRESSION ]# 注意方括号内必须有空格
一、文件测试操作
test 命令最常用于检查文件属性,以下是常用文件测试选项:
操作符
描述
示例
-e
文件是否存在
[ -e file.txt ]
-f
是普通文件
[ -f /path/to/file ]
-d
是目录
[ -d /path/to/dir ]
-r
可读
[ -r file.txt ]
-w
可写
[ -w file.txt ]
-x
可执行
[ -x script.sh ]
-s
文件大小 >0
[ -s logfile ]
-L
是符号链接
[ -L symlink ]
实例
#!/bin/bashfile="/etc/passwd"if[-e"$file"];then   echo"$file 存在"   if[-r"$file"];then       echo"并且可读"   fielse   echo"$file 不存在"fi
输出结果为:
/etc/passwd 存在并且可读
二、字符串比较
test 提供了多种字符串比较方式:
操作符
描述
示例
-z STRING
字符串为空
[ -z "$var" ]
-n STRING
字符串非空
[ -n "$var" ]
STRING1 = STRING2
字符串相等
[ "$var1" = "$var2" ]
STRING1 != STRING2
字符串不等
[ "$var1" != "$var2" ]
实例
#!/bin/bashread-p"输入用户名: "usernameif[-z"$username"];then   echo"错误:用户名不能为空"   exit1elif["$username"="root"];then   echo"警告:不建议使用root账户"else   echo"欢迎, $username"fi
执行后,我们在终端输入 runoob,输出结果类似如下:
输入用户名: zu欢迎, zu
三、数值比较
对于数值比较,test 使用不同的操作符:
操作符
描述
示例
-eq
等于
[ "$a" -eq "$b" ]
-ne
不等于
[ "$a" -ne "$b" ]
-gt
大于
[ "$a" -gt "$b" ]
-ge
大于或等于
[ "$a" -ge "$b" ]
-lt
小于
[ "$a" -lt "$b" ]
-le
小于或等于
[ "$a" -le "$b" ]
实例
#!/bin/bashread-p"输入年龄: "ageif["$age"-lt0];then   echo"年龄不能为负数"elif["$age"-lt18];then   echo"未成年人"elif["$age"-ge18]&&["$age"-lt60];then   echo"成年人"else   echo"老年人"fi
执行后,我们在终端输入 12,输出结果类似如下:
输入年龄:12未成年人
四、逻辑操作符
test 支持逻辑组合:
操作符
描述
示例
!
逻辑非
[ ! -f "$file" ]
-a
逻辑与
[ "$a" -eq 1 -a "$b" -eq 2 ]
-o
逻辑或
[ "$a" -eq 1 -o "$b" -eq 2 ]
实例
[ "$a"-eq1]&&["$b"-eq2] # 与["$a"-eq1]||["$b"-eq2] # 或
五、高级用法:[[ ]] 和 (( ))
1.双括号 [[ ]]
  • 支持模式匹配:[[ "$var" == *.txt ]]
  • 支持正则表达式:[[ "$var" =~ ^[0-9]+$ ]]
  • 更安全的字符串处理
2.算术比较 (( ))
if [["$file"==*.log]];then   echo"这是日志文件"fiif(($count>10));then   echo"数量超过10"fi
六、实际应用
1. 检查服务是否运行
#!/bin/bashservice="nginx"ifsystemctl is-active--quiet"$service";then   echo"$service 正在运行"else   echo"$service 未运行"   # 可以添加启动服务的命令fi
2. 备份文件检查
#!/bin/bashbackup_file="/backups/data_$(date +%Y%m%d).tar.gz"if[!-f"$backup_file"];then   echo"错误:备份文件 $backup_file 不存在"   exit1elif[!-s"$backup_file"];then   echo"警告:备份文件为空"else   echo"备份验证成功"fi
七、常见错误与调试技巧
1.缺少空格:[ "$a"="$b" ] 是错误的,正确是 [ "$a" = "$b" ]
2.未引用的变量:[ -f $file ] 应该为 [ -f "$file" ]
3.混淆字符串和数值比较:使用 = 比较字符串,-eq 比较数值
实例
echo "测试表达式: [ $a -eq $b ]"[ "$a" -eq "$b" ] && echo "成立" || echo "不成立"

最新文章

随机文章