Shell 学习之 if 命令

1. 执行流程

Shell 脚本中,if 是一个 控制流语句,用于进行条件判断,根据条件的结果执行相应的操作。

# 首先,Shell 会检查表达式 condition 返回的 boolean 值。
# 如果 condition 的值为真,则执行 then 代码块;
# 如果 condition 的值为假,则执行 else 代码块。 
# if 语句结束。结束后, Shell 继续执行后面的代码。

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 不存在则为真

你可能感兴趣的:(学习,linux,Shell,if)