国际访客建议访问 Primers 编程伙伴 国际版站点 > Bash 教程 > if 条件语句 以获得更好的体验。

# Bash 的 if 条件语句

Bash 的 if 条件语句的语法为:

if 条件命令
then
    命令
    ...
elif 条件命令
then
    命令
    ...
else
    命令
    ...
fi

其中,条件命令返回成功(0)时为真(true),返回失败(非 0)时为假(false)。

如果省略(部分)换行,则需要使用分号(;)区分:

if 条件命令; then 命令; 命令; elif 条件命令; then 命令; 命令; else 命令; 命令; fi

示例:

if test "$SHELL" = "/bin/bash"
then
    echo 很好
else
    echo 完蛋
fi
  • 判断变量 SEHLL 的值是否是 /bin/bash

注意,这里的 "$SHELL" = "/bin/bash" 不要省略引号写成 $SHELL = /bin/bash;否则变量 SHELL 为空时会产生语法错误。

  • = - 判断字符串相等

  • != - 判断字符串不同

# test 命令

如上述示例代码,Bash 的条件一般使用 test 命令,格式为:

test 条件表达式

[ 条件表达式 ]      # 不可省略空格

[[ 条件表达式 ]]    # 不可省略空格
  • test[ 是等价的,它们既是 Bash 的内置命令,也是可执行文件

  • [[ 是 Bash 的关键字,额外支持正则判断

test 命令的常用选项如下:

  • -e - 文件存在

  • -f - 文件存在且是普通文件

  • -d - 文件存在且是目录

  • -b - 文件存在且是块设备

  • -c - 文件存在且是字符设备

  • -L - 文件存在且是符号链接

  • -eq - 等于(只能用于整数,下同)

  • -ne - 不等于

  • -lt - 小于

  • -le - 小于或等于

  • -gt - 大于

  • -ge - 大于或等于

例如:

运行示例

FILE="$0"

if [ -f $FILE ]; then
    echo $FILE 是普通文件
elif [ -e $FILE ]; then
    echo $FILE 不是普通文件
else
    echo $FILE 文件不存在
fi

# true 和 false

Bash 的内置命令中包含 truefalse 两个命令,前者直接返回成功(0),后者直接返回失败(1)。

本文 更新于: 2025-11-27 09:38:13 创建于: 2025-11-27 09:38:13