Shell脚本条件判断语法格式实战示例

Written by

in

文章目录
  • 在 Linux 系统中,Shell 脚本是系统管理、自动化任务和运维工作中不可或缺的工具。而条件判断是 Shell 脚本中最核心的控制结构之一,它决定了程序的执行流程,让脚本具备“智能”判断能力。 本文将全面讲解 Shell 脚本中条件判断的语法格式,包括 test 命令、[ ]、[[ ]] 和 (( )) 四种常见形式,并结合实际示例帮助你掌握其使用方法和注意事项。
  • Shell 中有四种常用的条件判断写法,它们各有特点,适用于不同场景。
  • 运算符 说明 用法 && 逻辑与 [[ 条件1 && 条件2 ]] ` ` ! 逻辑非 [[ ! 条件 ]] ⚠️ 注意: [ ] 中需使用 -a(与)、-o(或),不推荐使用。 推荐使用 [[ ]] 配合 && 和 ||,更清晰易读。
  • #!/bin/bash filename=”data.txt” if [[ -f “$filename” && -r “$filename” ]]; then echo “文件存在且可读,开始处理…” cat “$filename” else echo “文件不存在或不可读!” exit 1 fi
  • 错误 原因 解决方法 缺少空格 [ $var=5 ] 正确写法:[ $var = 5 ] 变量未加引号 $var 为空时报错 使用 "$var" 使用 [ ] 写复杂逻辑 不支持 &&、` 在 sh 中使用 [[ ]] 兼容性问题 改为 [ ] 或使用 bash 执行
  • 到此这篇关于Shell脚本条件判断语法格式实战示例的文章就介绍到这了,更多相关shell条件判断内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Shell Script条件判断详解 shell中if条件判断的实现 shell脚本语言之if条件判断语句实例详解 Shell脚本中if条件判断的写法实例 Linux shell条件判断if中的-a到-z的意思【推荐】 Shell脚本IF条件判断和判断条件总结 Linux shell脚本编程if语句的使用方法(条件判断)
  • 目录
    • 一、前言
    • 二、Shell 条件判断的四种语法格式
      • 1. 使用test命令
      • 2. 使用[ ](中括号)
      • 3. 使用[[ ]](双中括号)—— 推荐使用
      • 4. 使用(( ))(双小括号)—— 数值计算专用
    • 三、常用条件判断类型
      • 1. 数值比较
      • 2. 字符串比较
      • 3. 文件测试
    • 四、逻辑运算符
      • 五、实战示例:判断文件是否存在并可读
        • 六、常见错误与注意事项
          • 七、结语

            在 Linux 系统中,Shell 脚本是系统管理、自动化任务和运维工作中不可或缺的工具。而条件判断是 Shell 脚本中最核心的控制结构之一,它决定了程序的执行流程,让脚本具备“智能”判断能力。

            本文将全面讲解 Shell 脚本中条件判断的语法格式,包括 test 命令、[ ][[ ]](( )) 四种常见形式,并结合实际示例帮助你掌握其使用方法和注意事项。

            Shell 中有四种常用的条件判断写法,它们各有特点,适用于不同场景。

            test 是最基础的条件判断命令,语法如下:

            test 表达式

            示例:

            #!/bin/bash
            if test 10 -gt 5; then
                echo "10 大于 5"
            fi

            ✅ 特点:兼容性好,适用于所有 POSIX 标准的 shell。

            这是 test 命令的等价写法,更常见于脚本中:

            [ 表达式 ]

            注意: 中括号与表达式之间必须有空格!

            示例:

            #!/bin/bash
            num=20
            if [ $num -eq 20 ]; then
                echo "数值相等"
            fi

            ✅ 特点:简洁,广泛使用。
            ⚠️ 注意:[ ] 不支持正则表达式和通配符匹配。

            [[ ]] 是 Bash 的扩展语法,功能更强大,支持字符串模式匹配、逻辑运算符 &&|| 等。

            [[ 表达式 ]]

            示例:

            #!/bin/bash
            name="alice"
            if [[ $name == "alice" ]]; then
                echo "用户名正确"
            fi
            # 支持通配符
            if [[ $name == a* ]]; then
                echo "名字以 a 开头"
            fi

            ✅ 特点:

            • 支持 &&||! 逻辑运算符
            • 支持 ==!= 字符串匹配(支持通配符)
            • 不需要对变量加引号(但仍建议加)

            ⚠️ 注意:[[ ]] 仅在 Bash、Zsh 等现代 shell 中可用,不适用于 sh

            (( )) 用于数值比较和算术运算,语法更接近 C 语言。

            (( 表达式 ))

            示例:

            #!/bin/bash
            a=10
            b=5
            if (( a > b )); then
                echo "a 大于 b"
            fi
            # 支持复合运算
            if (( a > 5 && b < 10 )); then
                echo "条件成立"
            fi

            ✅ 特点:

            • 专用于数值判断
            • 支持 ><>=<===!=&&|| 等
            • 写法简洁,无需使用 -gt-lt 等参数

            运算符 含义 示例
            -eq 等于 [ 5 -eq 5 ]
            -ne 不等于 [ 5 -ne 3 ]
            -gt 大于 [ 5 -gt 3 ]
            -ge 大于等于 [ 5 -ge 5 ]
            -lt 小于 [ 3 -lt 5 ]
            -le 小于等于 [ 3 -le 5 ]

            💡 使用 (( )) 时可用 >, <, == 等符号。

            运算符 含义 示例
            = 或 == 等于 [ "a" = "a" ]
            != 不等于 [ "a" != "b" ]
            -z 字符串为空 [ -z "" ]
            -n 字符串非空 [ -n "hello" ]

            示例:

            str=""
            if [ -z "$str" ]; then
                echo "字符串为空"
            fi

            ✅ 建议:字符串变量使用双引号包围,防止空值导致语法错误。

            运算符 含义 示例
            -f file 是否为普通文件 [ -f /etc/passwd ]
            -d dir 是否为目录 [ -d /tmp ]
            -e file 是否存在 [ -e /bin/bash ]
            -r file 是否可读 [ -r file.txt ]
            -w file 是否可写 [ -w file.txt ]
            -x file 是否可执行 [ -x script.sh ]

            示例:

            if [ -f "/etc/hosts" ]; then
                echo "hosts 文件存在"
            fi

            运算符 说明 用法
            && 逻辑与 [[ 条件1 && 条件2 ]]
            ` `
            ! 逻辑非 [[ ! 条件 ]]

            ⚠️ 注意:

            • [ ] 中需使用 -a(与)、-o(或),不推荐使用。
            • 推荐使用 [[ ]] 配合 && 和 ||,更清晰易读。

            #!/bin/bash
            filename="data.txt"
            if [[ -f "$filename" && -r "$filename" ]]; then
                echo "文件存在且可读,开始处理..."
                cat "$filename"
            else
                echo "文件不存在或不可读!"
                exit 1
            fi

            错误 原因 解决方法
            缺少空格 [ $var=5 ] 正确写法:[ $var = 5 ]
            变量未加引号 $var 为空时报错 使用 "$var"
            使用 [ ] 写复杂逻辑 不支持 &&、`
            在 sh 中使用 [[ ]] 兼容性问题 改为 [ ] 或使用 bash 执行

            到此这篇关于Shell脚本条件判断语法格式实战示例的文章就介绍到这了,更多相关shell条件判断内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

            您可能感兴趣的文章:

            • Shell Script条件判断详解
            • shell中if条件判断的实现
            • shell脚本语言之if条件判断语句实例详解
            • Shell脚本中if条件判断的写法实例
            • Linux shell条件判断if中的-a到-z的意思【推荐】
            • Shell脚本IF条件判断和判断条件总结
            • Linux shell脚本编程if语句的使用方法(条件判断)

            站内搜索