太阳集团城8722(中国·Macau)有限公司-Official website

掌握太阳集团城8722最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

Shell if else语句详解(语句格式、用法)

在 Shell 脚本开发中,条件判断是控制程序流程的核心机制之一。if else 语句作为 Shell 中最常用的条件判断结构,广泛用于判断文件是否存在、变量是否为空、命令执行是否成功等场景。掌握 if else 的语法结构和使用方式,是编写高效、健壮 Shell 脚本的关键技能。本文将详细介绍 Shell 中 if else 语句的基本格式、常见用法,并结合多个实际示例,帮助开发者快速上手并灵活应用这一基础但强大的控制结构。

一、if else 语句的基本语法结构

Shell 中的 if else 语句用于根据条件执行不同的代码块,其基本语法如下:

if [ condition ]; then
    # 条件为真时执行的命令
else
    # 条件为假时执行的命令
fi

其中:

if 后的 [ condition ] 是判断条件,中括号是 test 命令的简写形式;

then 表示条件成立后要执行的代码块;

else 是可选部分,表示条件不成立时的执行逻辑;

fi 是 if 的结束标识,必须成对出现。

注意: 中括号 [] 与条件之间必须有空格,否则会报错。

二、if else 的多种变体与使用方式

  1. 单个 if 判断

只判断一个条件,不包含 else 分支:

if [ "$name" = "admin" ]; then
    echo "欢迎管理员"
fi
  1. if else 判断

二选一的判断结构:

if [ -f "file.txt" ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi
  1. if elif else 多条件判断

适用于多个条件分支的情况:

if [ "$score" -ge 90 ]; then
    echo "优秀"
elif [ "$score" -ge 60 ]; then
    echo "及格"
else
    echo "不及格"
fi
  1. 嵌套 if 判断

在 if 或 else 块内部再嵌套 if 判断,实现更复杂的逻辑:

if [ "$age" -ge 18 ]; then
    if [ "$gender" = "男" ]; then
        echo "成年男性"
    else
        echo "成年女性"
    fi
else
    echo "未成年人"
fi
  1. 结合 test 命令使用

test 命令与 [ ] 等价,可以用于判断文件、字符串、数值等:

if test -d "/var/log"; then
    echo "日志目录存在"
else
    echo "日志目录不存在"
fi
  1. 使用双中括号 [[ ]] 提升安全性

在 bash 环境中,使用 [[ ]] 替代 [ ] 可以避免一些语法陷阱,如无需转义 <、> 等符号:

if [[ "$name" == "root" ]]; then
    echo "当前用户是 root"
fi
  1. 使用命令执行结果作为判断条件

Shell 中的 if 语句也可以直接判断命令执行是否成功(返回值为 0 表示成功):

if ping -c 1 google.com > /dev/null; then
    echo "网络连接正常"
else
    echo "网络连接失败"
fi

三、if else 中的常用判断条件

在 if 语句中,判断条件可以是文件判断、数值比较、字符串判断等多种类型。

  1. 文件判断

-f file:判断是否为普通文件;

-d dir:判断是否为目录;

-e file:判断文件或目录是否存在;

-r file:判断文件是否可读;

-w file:判断文件是否可写;

-x file:判断文件是否可执行。

示例:

if [ -f "data.txt" ]; then
    echo "data.txt 是一个文件"
fi
  1. 数值比较

-eq:等于;

-ne:不等于;

-lt:小于;

-le:小于等于;

-gt:大于;

-ge:大于等于。

示例:

if [ "$age" -ge 18 ]; then
    echo "成年"
else
    echo "未成年"
fi
  1. 字符串比较

=:字符串相等;

!=:字符串不相等;

-z:判断字符串是否为空;

-n:判断字符串是否非空。

示例:

if [ "$name" = "张三" ]; then
    echo "欢迎张三"
else
    echo "非张三用户"
fi
  1. 逻辑运算符

&&:逻辑与;

||:逻辑或;

!:逻辑非。

示例:

if [ "$age" -ge 18 ] && [ "$age" -le 60 ]; then
    echo "年龄在18到60之间"
fiif [ -z "$input" ]; then
    echo "输入为空"
fi

四、if else 语句的典型使用场景

  1. 检查文件或目录是否存在

if [ -f "config.json" ]; then
    echo "配置文件存在"
else
    echo "配置文件缺失"
fi
  1. 判断命令是否执行成功

if grep "error" log.txt; then
    echo "发现错误日志"
else
    echo "未发现错误"
fi
  1. 参数判断

用于判断脚本传入的参数是否符合预期:

if [ -z "$1" ]; then
    echo "缺少参数"
    exit 1
fi
  1. 用户权限判断

判断当前用户是否为 root:

if [ "$(id -u)" -eq 0 ]; then
    echo "当前为 root 用户"
else
    echo "当前为普通用户"
fi
  1. 路径判断

判断路径是否存在并创建:

if [ ! -d "/data/logs" ]; then
    mkdir -p /data/logs
    echo "日志目录已创建"
fi
  1. 多条件判断

多个条件组合判断:

if [ "$age" -ge 18 ] && [ "$gender" = "男" ]; then
    echo "成年男性"
fi
  1. 结合 case 语句使用

if 与 case 可以配合使用,实现更复杂的逻辑:

if [ "$status" -eq 1 ]; then
    echo "任务进行中"
else
    case "$status" in
        2) echo "任务完成" ;;
        3) echo "任务失败" ;;
        *) echo "未知状态" ;;
    esac
fi
  1. 判断命令是否存在

用于判断某个命令是否安装:

if command -v curl > /dev/null; then
    echo "curl 已安装"
else
    echo "curl 未安装"
fi
  1. 判断进程是否运行

判断某个服务是否运行:

if pgrep nginx > /dev/null; then
    echo "Nginx 正在运行"
else
    echo "Nginx 未运行"
fi
  1. 判断输入是否为空

read -p "请输入名称:" name
if [ -z "$name" ]; then
    echo "不能为空"
else
    echo "你输入的是:$name"
fi
  1. 判断两个文件是否相同

if diff file1.txt file2.txt > /dev/null; then
    echo "两个文件内容一致"
else
    echo "两个文件内容不同"
fi
  1. 判断脚本是否被正确调用

if [ $# -lt 1 ]; then
    echo "用法:$0 <参数>"
    exit 1
fi
  1. 判断变量是否为数字

if [[ "$input" =~ ^[0-9]+$ ]]; then
    echo "输入是数字"
else
    echo "输入不是数字"
fi
  1. 判断用户输入是否为 Y/y/N/n

read -p "是否继续?(Y/N)" choice
if [ "$choice" = "Y" ] || [ "$choice" = "y" ]; then
    echo "继续执行"
else
    echo "退出操作"
fi
  1. 结合函数使用

将 if 与函数结合,提高脚本的模块化程度:

is_valid() {
    [ "$1" -gt 0 ] && [ "$1" -le 100 ]
}
if is_valid "$score"; then
    echo "成绩有效"
else
    echo "成绩无效"
fi

Shell if else语句详解(语句格式、用法)

if else 是 Shell 脚本中最基础、最常用的条件判断结构,它不仅支持简单的判断,还能通过 elif 实现多条件判断,结合 test、[[ ]]、正则表达式等,可以实现复杂的逻辑控制。

声明:所有来源为“澳门太阳集团城网址8722”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 航班订票查询

    通过出发地、目的地、出发日期等信息查询航班信息。

    通过出发地、目的地、出发日期等信息查询航班信息。

  • 火车订票查询

    通过站到站查询火车班次时刻表等信息,同时已集成至太阳集团城8722MCP Server。火车票订票MCP不仅能赋予你的Agent火车时刻查询,还能支持在线订票能力。

    通过站到站查询火车班次时刻表等信息,同时已集成至太阳集团城8722MCP Server。火车票订票MCP不仅能赋予你的Agent火车时刻查询,还能支持在线订票能力。

  • 车辆过户信息查询

    通过车辆vin码查询车辆的过户次数等相关信息

    通过车辆vin码查询车辆的过户次数等相关信息

  • 银行卡五元素校验

    验证银行卡、身份证、姓名、手机号是否一致并返回账户类型

    验证银行卡、身份证、姓名、手机号是否一致并返回账户类型

  • 高风险人群查询

    查询个人是否存在高风险行为

    查询个人是否存在高风险行为

0512-88869195
数 据 驱 动 未 来
Data Drives The Future
XML 地图