一、if语法结构

  1. 单分支结构
    if < 条件表达式 >
    then
     指令
    fi
    或者
if < 条件表达式 >;then
  指令
fi
2. 双分支结构
if < 条件表达式 >
  then
    指令1
else
    指令2
fi
  1. 多分支结构

    if < 条件表达式1 >
    then
     指令1
    elif < 条件表达式2 >
    then
     指令2
    elif < 条件表达式3 >
    then
     指令3
    else
     指令4
    fi

    条件表达式可以是test、[]、[[]]、(())等,也可以直接使用命令作为条件表达式
    每个if语句都以if开头,并带有then,最后以fi结尾
    多分支每个elif后也要带then,但else后不带then

  2. 条件表达式和if语句的变换
    符号条件表达式能够转换为if语句,如下

[ -f /etc/passwd ] && echo 1 || echo 0
等同于

if [ -f /etc/passwd ]
  then
    echo 1
else
    echo 0
fi
其他条件表达式
```类似

二、case语句说明和语法
1. 说明
case语句相当于多分枝的if/elif/else条件语句,但看起来更工整,常用于实现系统服务启动脚本等应用中
case主要是写服务的启动脚本,适用范围较窄
if取值判断、比较,应用面比case更广,几乎所有case语句都可以用if实现
2. 语法
```bash
case "变量" in
    值1)
        指令1...
        ;;
    值2)
        指令2...
        ;;
    *)
        指令3...

esac
说明:

如果变量的值等于值1时,则执行该值后面的指令1直到遇到;;后停止,然后跳出case语句,执行case语句后面的其他指令
如果没有匹配到任何值,则执行*)后面的指令,该指令通常是提示用户的指令,最后一个值可以省略双分号
表达式值支持管道、正则等多功能匹配

  1. 简单实践
    根据用户输入判断用户输入的哪个数值,并输出,如果非数值,则提示错误
cat /server/scripts/b7.sh
#!/bin/bash
read -p "pls input num[1-9]" num
case "$num" in
  1)
    echo "the num is 1"
    ;;
  2)
    echo "the num is 2"
    ;;
  [3-9])
    echo "the num is $num"
    ;;
  *)
    echo "pls input num,3q"
esac

执行脚本查看结果:

sh /server/scripts/b7.sh
pls input num[1-9]1
the num is 1
sh /server/scripts/b7.sh
pls input num[1-9]3
the num is 3
sh /server/scripts/b7.sh
pls input num[1-9]g
pls input num,3q
文档更新时间: 2023-08-09 10:46   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室