Shell 结构化命令

📅 2026/7/11 17:05:13 👁️ 阅读次数 📝 编程学习
Shell 结构化命令

一、基础 if 分支语法

  1. if-then 基础结构 if 后执行一条命令,命令退出码为 0(成功)则执行 then 内代码,fi结束判断;可分两行或同行加分号简写
    if command
    then
    执行语句
    fi
    # 同行简写
    if command; then
    执行语句
    fi

  2. if-then-else 二分支 命令执行失败时,执行 else 内语句
    if command
    then
    成功语句
    else
    失败语句
    fi

  3. if-elif 多分支 连续多条件判断,依次匹配,匹配后终止
    if 命令1
    then
    语句1
    elif 命令2
    then
    语句2
    elif 命令3
    then
    语句3
    fi

二、test 条件测试

if 仅能判断命令执行状态,test 可检测数值、字符串、文件三类条件,两种等价写法:if test 条件/if [ 条件 ]注意:[]左右必须留空格

1. 数值比较(仅支持整数)

-eq 相等、-ne 不等、-gt 大于、-ge 大于等于、-lt 小于、-le 小于等于 浮点无法使用 test 数值判断

2. 字符串比较

str1 = str2相等、str1 != str2不等;>/<需转义><-n 字符串:长度非空;-z 字符串:长度为空

3. 文件状态检测

-e 文件存在、-d 目录、-f 普通文件;-r 可读、-w 可写、-x 可执行 -s 文件非空、-O 属当前用户、-G 属当前用户组;-nt 文件更新、-ot 文件更旧

三、复合条件判断(布尔逻辑)

  1. &&逻辑与:两组条件同时成立才为真[ 条件1 ] && [ 条件2 ]

  2. ||逻辑或:任意一组条件成立即为真[ 条件1 ] || [ 条件2 ]

四、高级判断:双括号、双方括号

  1. 双括号(( ))支持高级数学运算、幂运算、自增自减、逻辑符号,比较符无需转义,仅用于数值运算

  2. 双方括号[[ ]]增强字符串判断,支持通配符模式匹配,无需转义大小于符号

五、小结

  1. if 系列分支实现流程控制,分单分支、二分支、多分支;

  2. test/[]实现三类条件检测:整数、字符串、文件;

  3. &&、|| 实现多条件组合判断;

  4. (( ))高级数值运算,[[ ]]字符串模式匹配;