1. 执行流程
在 Shell
脚本中,if
是一个 控制流语句
,用于进行条件判断
,根据条件的结果执行相应的操作。
if [ condition ];
then
else
fi
2. 条件判断
在 if
语句中,condition
是一个条件判断表达式
,返回值为 布尔值(0:false 1:true)
。
在条件判断语句中,[ "$str" = "Hello" ] 中的空格是必需的
。这是因为在 Shell 中,= 两侧的空格用于分隔运算符和操作数。缺少空格 可能
导致语法错误或错误的结果。进行字符串判断时,必须使用双引号将参数括起来(例如:"a b",如果没有双引号解析是否存在问题?)
。这是因为在 Shell 中,如果使用双引号 Shell 会将参数解释为字符串,如果不使用双引号 Shell 会将变量解释为命令输出,这样会导致判断结果失败或者错误。
2.1. 文件
场景 | 表达式 | 备注 |
---|
文件存在 | -e | -e /path/to/file |
文件存在且类型为文件 | -f | -f /path/to/file1.txt |
文件存在且类型为文件夹 | -d | -d /path/to/dir |
2.2. 字符串
场景 | 表达式 | 备注 |
---|
字符串为空 | -z | -z "$string" |
字符串不为空 | -n | -n "$string" |
字符串相等 | = | "$str1" = "$str2" |
字符串不相等 | != | "$str1" != "$str2" |
2.3. 数字
场景 | 表达式 | 备注 |
---|
等于 | -eq | $num1 -eq $num2 |
不等于 | -ne | $num1 -ne $num2 |
大于 | -gt | $num1 -gt $num2 |
小于 | -lt | $num1 -lt $num2 |
大于等于 | -ge | $num1 -ge $num2 |
小于等于 | -le | $num1 -le $num2 |
2.4. 逻辑符号
场景 | 表达式 | 示例 | 备注 |
---|
与 | -a | "$str1" = "A" -a "$str2" = "B" | 两个都为真则为真 |
或 | -o | "$str1" = "A" -o "$str2" = "B" | 两个都为假则为假 |
非 | ! | ! -f file1.txt | 文件 file1.txt 不存在则为真 |