在编写 Linux Shell 脚本时,经常需要根据不同的条件执行不同的操作。比如:判断一个文件是否存在、两个数字是否相等、用户是否输入了正确的内容等等。这就需要用到 条件测试。
什么是条件测试?
条件测试是 Shell 脚本中用于判断某个条件是否成立的机制。如果条件为真(true),就执行某段代码;如果为假(false),则跳过或执行另一段代码。这是实现程序逻辑控制的基础。
基本语法
在 Shell 中,最常用的条件测试方式是使用 test 命令或者方括号 [ ]。它们的功能完全相同。
# 使用 test 命令if test -f /etc/passwd; then echo "文件存在"fi# 使用 [ ](注意:方括号前后必须有空格!)if [ -f /etc/passwd ]; then echo "文件存在"fi
常用测试操作符
Shell 提供了多种测试操作符,主要分为三类:文件测试、字符串测试 和 数值测试。
1. 文件测试操作符
用于检测文件或目录的状态。这是 文件测试操作符 的典型应用场景。
-f file # 判断 file 是否为普通文件-d dir # 判断 dir 是否为目录-e file # 判断 file 是否存在(任何类型)-r file # 判断 file 是否可读-w file # 判断 file 是否可写-x file # 判断 file 是否可执行
2. 字符串测试
-z str # 判断字符串 str 是否为空(长度为0)-n str # 判断字符串 str 是否非空str1 = str2 # 判断两个字符串是否相等str1 != str2 # 判断两个字符串是否不等
3. 数值比较
-eq # 等于(equal)-ne # 不等于(not equal)-gt # 大于(greater than)-lt # 小于(less than)-ge # 大于等于-le # 小于等于
完整示例:一个简单的备份脚本
下面是一个结合了多个条件测试的小脚本,适合初学者理解实际应用:
#!/bin/bashBACKUP_DIR="/backup"SOURCE_FILE="/home/user/data.txt"# 检查源文件是否存在且可读if [ ! -f "$SOURCE_FILE" ] || [ ! -r "$SOURCE_FILE" ]; then echo "错误:源文件不存在或不可读!" exit 1fi# 检查备份目录是否存在,不存在则创建if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" echo "已创建备份目录:$BACKUP_DIR"fi# 执行备份cp "$SOURCE_FILE" "$BACKUP_DIR/"echo "备份完成!"
注意事项
- 使用
[ ]时,左括号[后面和右括号]前面必须有空格,否则会报错。 - 变量最好用双引号括起来,如
"$VAR",防止变量为空或包含空格时出错。 - 多个条件可以用
&&(与)、||(或)连接,也可以用!取反。
总结
通过学习 Linux Shell条件测试,你可以让脚本具备“思考”能力。无论是做自动化运维、日志分析还是日常任务,条件判断都是不可或缺的核心技能。希望这篇 Shell脚本入门 教程能帮助你迈出编写智能脚本的第一步!
记住:多练习 if语句用法 和 文件测试操作符,你会越来越熟练!

