声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
在 Shell 脚本中,if
语句是实现条件判断和分支逻辑的核心语法。通过使用 if
,我们可以根据条件执行不同的操作,使脚本更加灵活和强大。本文将介绍 if
语句的基本语法、常见使用场景及注意事项。
1 基本语法
Shell 中的 if
语句的基本结构如下:
if 条件; then命令1命令2
fi
常见的扩展形式包括:
if-else
语句:
if 条件; then命令1
else命令2
fi
if-elif-else
语句:
if 条件1; then命令1
elif 条件2; then命令2
else命令3
fi
2 条件判断方式
在 if
中,条件判断主要依赖 test
或 []
命令。以下是常见的条件表达式:
2.1 文件条件
-e file
:文件存在。-d file
:文件是目录。-f file
:文件是普通文件。-s file
:文件大小非零。
示例:
if [ -e "/etc/passwd" ]; thenecho "文件存在"
fi
2.2 字符串条件
[ "$a" = "$b" ]
:判断字符串是否相等。[ -z "$a" ]
:判断字符串是否为空。
示例:
if [ "$USER" = "root" ]; thenecho "当前用户是 root"
fi
2.3 数值条件
-eq
:等于。-ne
:不等于。-gt
:大于。-lt
:小于。
示例:
if [ "$1" -gt 10 ]; thenecho "参数大于 10"
fi
2.4 逻辑运算符
-
[ 条件1 -a 条件2 ]
或者[ 条件1 ] && [ 条件2 ]
:逻辑与。 -
[ 条件1 -o 条件2 ]
或者[ 条件1 ] || [ 条件2 ]
:逻辑或。 -
! 条件
:逻辑非。示例:
if [ -z "$1" ] || [ -z "$2" ]; thenecho "请提供两个参数"exit 1
fiif [ "$1" -lt 10 -a "$2" -lt 10 ]; thenecho "参数1和参数2都小于10"
fi
3 示例
3.2 示例 1:检查文件类型
#!/bin/bash
file="/etc/passwd"if [ -f "$file" ]; thenecho "$file 是一个普通文件"
elif [ -d "$file" ]; thenecho "$file 是一个目录"
elseecho "$file 不存在或类型未知"
fi
3.2 示例 2:判断用户输入
#!/bin/bash
read -p "请输入一个数字:" numberif [ "$number" -gt 0 ]; thenecho "这是一个正数"
elif [ "$number" -lt 0 ]; thenecho "这是一个负数"
elseecho "这是零"
fi
3.2 示例 3:综合逻辑判断
#!/bin/bash
if [ $# -eq 2 ]; thenecho "参数数量正确"if [ "$1" = "$2" ]; thenecho "两个参数相等"elseecho "两个参数不相等"fi
elseecho "请输入两个参数"
fi
4 注意事项
-
条件语句的书写:
- 条件表达式中的变量应加引号,防止因空值导致语法错误。
[ 条件 ]
和条件内容之间需要有空格,否则会报错。
-
使用
test
命令:test
命令和[]
等价,可以直接使用,如:if test -e "/etc/passwd"; thenecho "文件存在" fi
-
Shell 的兼容性问题:
- 在
bash
和sh
中,if
的语法一致,但某些高级功能可能在不同版本中表现不同。
- 在