Shell脚本条件判断语法格式实战示例
目录
- 一、前言
- 二、Shell 条件判断的四种语法格式
- 1. 使用test命令
- 2. 使用[ ](中括号)
- 3. 使用[[ ]](双中括号)—— 推荐使用
- 4. 使用(( ))(双小括号)—— 数值计算专用
- 三、常用条件判断类型
- 1. 数值比较
- 2. 字符串比较
- 3. 文件测试
- 四、逻辑运算符
- 五、实战示例:判断文件是否存在并可读
- 六、常见错误与注意事项
- 七、结语
一、前言
在 linuxphp 系统中,Shell 脚本是系统管理、自动化任务和运维工作中不可或缺的工具。而条件判断是 Shell 脚本中最核心的控制结构之一,它决定了程序的执行流程,让脚本具备“智能”判断能力。
本文将全面讲解 Shell 脚本中条件判断的语法格式,包括 test
命令、[ ]
、[[ ]]
和 (( ))
四种常见形式,并结合实际示例帮助你掌握其使用方法和注意事项python。
二、Shell 条件判断的四种语法格式
Shell 中有四种常用的条件判断写法,它们各有特点,适用于不同场景。
1. 使用test命令
test
是最基础的条件判断命令,语法如下:
test 表达式
示例:
#!/bin/bash if test 10 -gt 5; then echo "10 大于 5" fi
✅ 特点:兼容性好,适用于所有 POSIX 标准的 shell。
2. 使用[ ](中括号)
这是 test
命令的等价写法,更常见于脚本中:
[ 表达式 ]
注意: 中括号与表达式之间必须有空格!
示例:
#!/bin/bash num=20 if [ $num -eq 20 ]; then echo "数值相等" fi
✅ 特点:简洁,广泛使用。
⚠️ 注意:[ ]
不支持正则表达式和通配符匹配。
3. 使用[[ ]](双中括号)—— 推荐使用
[[ ]]
是 Bash 的扩展语法,功能更强大,支持字符串模式匹配、逻辑运算符 &&
和 ||
等。
[[ 表达式 ]]
示例:
#!/bin/bash name="alice" if [[ $name == "alice" ]]; thjavascripten echFTZlkPgRo "用户名正确" fi # 支持通配符 if [[ $name == a* ]]; then echo "名字以 a 开头" fi
✅ 特点:
- 支持
&&
、||
、!
逻辑运算符 - 支持
==
、!=
字符串匹配(支持通配符) - 不需要对变量加引号(但仍建议加)
⚠️ 注意:
[[ ]]
仅在 Bash、Zsh 等现代 shell 中可用,不适用于sh
。
4. 使用(( ))(双小括号)—— 数值计算专用
(( ))
用于数值比较和算术运算,语法更接近 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
等参数
三、常用条件判断类型
1. 数值比较
运算符 | 含义 | 示例 |
---|---|---|
-eq | 等于 | [ 5 -eq 5 ] |
-ne | 不等于 | [ 5 -ne 3 ] |
-gt | 大于 | [ 5 -gt 3 ] |
-ge | 大于等于 | [ 5 -ge 5 ] |
-lt | 小于 | [ 3 -lt 5 ] |
-le | 小于等于 | [ 3 -le 5 ] |
使用
(( ))
时可用>
,<
,==
等符号。
2. 字符串比较
运算符 | 含义 | 示例 |
---|---|---|
= 或 == | 等于 | [ "a" = "a" ] |
!= | 不等于 | [ "a" != "b" ] |
-z | 字符串为空 | [ -z "" ] |
-n | 字符串非空 | [ -n "hello" ] |
示例:
str="" if [ -z "$str" ]; then echo "字符串为空" fi
✅ 建议:字符串变量使用双引号包围,防止空值导致语法错误。
3. 文件测试
运算符 | 含义 | 示例 |
---|---|---|
-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
(或),不推荐使用。- 推荐使用
[[ ]]
配合&&
和||
,更清晰易读。js
五、实战示例:判断文件是否存在并可读
#!/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条件判断内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论