在编写 Linux Shell 脚本时,经常需要根据不同的条件执行不同的操作。这就需要用到 Linux Shell条件运算符。无论你是刚接触 Shell 的小白,还是想巩固基础知识的开发者,这篇教程都将帮助你轻松掌握条件判断的核心用法。
什么是 Shell 条件运算符?
Shell 条件运算符用于在脚本中进行逻辑判断,比如比较数字、字符串,或者检查文件是否存在等。它们通常配合 if 语句使用,实现“如果...就...”的逻辑。
基本语法:test 命令与 [ ]
在 Shell 中,有两种常用方式来执行条件测试:
test expression[ expression ](注意:方括号两边要有空格!)
这两种写法是等价的。例如:
# 使用 testif test -f /etc/passwd; then echo "文件存在"fi# 使用 [ ]if [ -f /etc/passwd ]; then echo "文件存在"fi 常用条件运算符分类
1. 文件测试运算符
用于检查文件或目录的状态:
-f file:文件存在且为普通文件-d dir:目录存在-r file:文件可读-w file:文件可写-x file:文件可执行
if [ -d /home/user ]; then echo "用户主目录存在"else echo "目录不存在"fi 2. 数值比较运算符
用于比较两个整数:
-eq:等于(equal)-ne:不等于(not equal)-gt:大于(greater than)-lt:小于(less than)-ge:大于等于-le:小于等于
read -p "请输入一个数字: " numif [ $num -gt 10 ]; then echo "数字大于10"else echo "数字小于或等于10"fi 3. 字符串比较运算符
用于比较字符串内容:
=或==:字符串相等!=:字符串不相等-z str:字符串长度为0(空)-n str:字符串长度非0(非空)
name="Alice"if [ "$name" = "Alice" ]; then echo "欢迎 Alice!"fi 4. 逻辑运算符
用于组合多个条件:
! expr:逻辑非(取反)expr1 -a expr2:逻辑与(and)— 注意:部分 Shell 不推荐使用,建议用&&expr1 -o expr2:逻辑或(or)— 同样,建议用||
更现代的写法是在 [[ ]] 中使用 && 和 ||:
if [[ -f script.sh && -x script.sh ]]; then ./script.shelse echo "脚本不可执行或不存在"fi 完整示例:一个实用的备份脚本
下面是一个结合了多种 Shell测试命令 的小脚本,用于安全地备份重要文件:
#!/bin/bashSOURCE="/home/user/important.txt"BACKUP_DIR="/backup"# 检查源文件是否存在且可读if [ ! -f "$SOURCE" ] || [ ! -r "$SOURCE" ]; then echo "错误:源文件不存在或不可读" exit 1fi# 检查备份目录是否存在,不存在则创建if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" echo "已创建备份目录"fi# 执行备份cp "$SOURCE" "$BACKUP_DIR/$(date +%Y%m%d)_important.txt"echo "备份完成!" 常见错误与注意事项
- 方括号
[ ]两边必须有空格,否则会报错。 - 变量最好用双引号括起来,如
"$var",防止空值或含空格的字符串出错。 - 在 Bash 中,推荐使用
[[ ]]而不是[ ],因为它支持更多功能且更安全。
总结
通过本教程,你已经掌握了 Linux Shell条件运算符 的基本用法,包括文件测试、数值比较、字符串判断和逻辑组合。这些知识是编写健壮 Shell脚本教程 的基础。多加练习,你很快就能写出功能强大的自动化脚本!
记住:条件判断是 Shell 编程的“大脑”,学会它,你就迈出了成为 Linux 自动化高手的第一步!

