• [Linux] shell条件语句和if语句


    一、条件语句

    1.1 测试

    test 测试文件的表达式是否成立

    格式:test 条件表达式

               [ 条件表达式 ]

    选项作用
    -d测试是否为目录
    -e测试目录或文件是否存在
    -a测试目录或文件是否存在
    -f测试是否为文件
    -r测试当前用户是否有权限读取
    -w测试当前用户是否有权限写入
    -x测试当前用户是否有权限执行
    -L测试是否为软连接文件
    test
    

    1.2 比较整数

    [ 整数1 -操作符 整数2 ] 公式

            -eq:第一个数等于第二个数

            -ne:第一个数不等于第二个数

            -gt:第一个数大于第二个数

            -lt:第一个数小于第二个数

            -le:第一个数小于或等于第二个数

            -ge:第一个数大于或等于第二个数

     1.3 字符串比较

    1. = 字符串相同
    2. != 字符串不相同
    3. -z 字符串内容为空
    4. -n 字符是否存在

    格式:

    1. [ $a = $b ] 是否相同
    2. [ $a != $b ] 是否不相同
    3. [ -z $b ] 是否为空
    4. [ -n $a ] 字符是否存在

    1.4 逻辑测试

    格式:[ 表达式1 ] 操作符 [ 表达式2 ] ...

               命令1 操作符 命令2...

    短路与

    全真才为真;一假即为假

    cmd1 && cmd2

    短路或

     一真才即为真;全假才为假

    cmd1 || cmd2

    应用

    cmd1 && cmd2 || cmd3

    1.5 双中括号

    用法

    [[ == (通配符) ]]

    [[ =~ (正则表达式) ]]

    1.6 () {}

    用途:都可以把命令放在一起,批量执行

    二、if 语句

    2.1 单分支语句

    1. 格式:
    2. if 判断条件
    3. then
    4. 命令语句
    5. fi

    2.2 双分枝语句

    1. 格式:
    2. if 判断条件
    3. then
    4. 命令
    5. else
    6. 命令
    7. fi

    实验1 

     实验2

     

    2.3  多分枝语句

    1. 格式:
    2. if 判断条件
    3. then
    4. 命令
    5. elif 判断条件2
    6. then
    7. 命令
    8. ..........
    9. else
    10. 命令
    11. fi

     猜丁壳游戏

    三、case分支语句

    CASE 语句允许更清晰的脚本程序结构层次,常用于启动、重启或停止服务的脚本时,有些服务不提供此类控制脚本,您要编写 CASE 语句来编写。

    case 语句主要用于以下情况:一个变量有多个值,需要对每个值执行不同的命令序列。这种情况与多分支 if 语句非常相似,只是 if 语句确定多个不同的条件,而 case 语句确定单个变量的不同值。

    1. 格式:
    2. case $num in
    3. 条件判断1)
    4. 命令1
    5. ;;
    6. 条件判断2)
    7. 命令2
    8. ;;
    9. 条件判断3)
    10. 命令3
    11. ;;
    12. ........
    13. *)
    14. ;;
    15. echo " "
    16. bash $0
    17. ;;
    18. esac

     利用case做个简易的Linux菜单

     试试关闭防火墙

     关于 CASE 语句的说明

            必须以 "in "结束,每个模式必须以右括号") "结束。

            双分号";; "表示命令序列的结束。

            可以在模式字符串中使用方括号表示连续的范围,如"[0-9]",垂直条形符号"|"表示 "或",如 "A|B"。

            ==最后)表示默认模式,"*"相当于通配符 ===*。

  • 相关阅读:
    【Spring源码解析】一文读懂Spring注入模型:开发者必备知识
    四个BY的区别 HIVE中
    Linux基础知识及常见指令
    如何高效开发一款微信小程序
    spring中事件的使用方法
    点云从入门到精通技术详解100篇-基于三维点云的并联机器人 抓取
    吉利笔试——编程代码题
    优雅编程:在IntelliJ IDEA中使用VIM (第02章:字母间移动,与鼠标的暂时分手(hjkl))
    【计算机毕业设计】基于协同过滤算法的体育商品推荐系统的设计与实现、SpringBoot+Vue
    node笔记记录78练习1
  • 原文地址:https://blog.csdn.net/Cnm_147258/article/details/134534208