Linux Shell条件测试全解析(从零开始掌握Shell脚本判断逻辑)

V5主机测评

在编写 Linux Shell 脚本时,经常需要根据不同的条件执行不同的操作。这就需要用到条件测试(Conditional Testing)。本文将从基础讲起,手把手教你如何在 Shell 中进行各种条件判断,即使是编程小白也能轻松上手!

Linux Shell条件测试全解析(从零开始掌握Shell脚本判断逻辑)

一、什么是条件测试?

条件测试就是通过判断某个表达式是否为真(true)或假(false),来决定程序下一步该做什么。在 Shell 脚本中,我们通常使用 test 命令或 [ ] 结构来进行条件测试。

二、基本语法

Shell 中条件测试有两种常用写法:

  • 使用 test 命令:
    test expression
  • 使用方括号:
    [ expression ](注意:左右括号内必须有空格!)

例如:

# 判断变量是否为空if [ -z "$name" ]; then  echo "变量 name 为空"fi

三、常见条件测试类型

1. 文件测试操作符

用于检测文件或目录的状态,是 文件测试操作符 的典型应用:

操作符 含义
-e file 文件存在
-f file 是普通文件
-d dir 是目录
-r file 文件可读
-w file 文件可写
-x file 文件可执行

示例:

if [ -f /etc/passwd ]; then  echo "/etc/passwd 是一个普通文件"fi

2. 字符串比较

这是 字符串比较Shell 的核心内容:

  • [ -z "$str" ]:字符串长度为0(空)
  • [ -n "$str" ]:字符串长度不为0(非空)
  • [ "$str1" = "$str2" ]:两个字符串相等
  • [ "$str1" != "$str2" ]:两个字符串不相等
read -p "请输入用户名: " usernameif [ -z "$username" ]; then  echo "你没有输入任何内容!"else  echo "你好,$username!"fi

3. 数值比较

注意:数值比较不能用 ==<,而要用以下专用操作符:

  • -eq:等于(equal)
  • -ne:不等于(not equal)
  • -gt:大于(greater than)
  • -ge:大于等于
  • -lt:小于(less than)
  • -le:小于等于
age=20if [ $age -ge 18 ]; then  echo "你已成年"else  echo "你还未成年"fi

四、组合条件

可以使用逻辑操作符组合多个条件:

  • ! expr:逻辑非
  • expr1 -a expr2:逻辑与(and)
  • expr1 -o expr2:逻辑或(or)

更现代的写法推荐使用 [[ ]]&&||

if [[ $age -ge 18 && -n "$username" ]]; then  echo "欢迎成人用户 $username"fi

五、实战小例子

下面是一个完整的脚本,综合运用了 Linux Shell条件测试Shell脚本if语句

#!/bin/bashread -p "请输入文件路径: " filepathif [ -z "$filepath" ]; then  echo "错误:未输入文件路径"elif [ ! -e "$filepath" ]; then  echo "错误:文件不存在"elif [ -d "$filepath" ]; then  echo "这是一个目录"elif [ -f "$filepath" ]; then  if [ -r "$filepath" ] && [ -w "$filepath" ]; then    echo "这是一个可读写的普通文件"  else    echo "这是一个普通文件,但权限不足"  fielse  echo "未知文件类型"fi

六、总结

掌握 Linux Shell条件测试 是编写健壮 Shell 脚本的基础。通过本文,你已经学会了:

  • 文件测试操作符的使用
  • 字符串和数值的比较方法
  • 如何组合多个条件
  • 编写实际可用的判断脚本

多加练习,你很快就能写出功能强大的自动化脚本!

关键词回顾:Linux Shell条件测试、Shell脚本if语句、文件测试操作符、字符串比较Shell

文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。