zoukankan      html  css  js  c++  java
  • shell脚本编程-结构化命令1-分支语句

    1、分支语句

    (1)if-then-fi 语句:

            格式:
        if command; then
            commands
        fi    

      当command命令的退出状态码为$?=0时,进入分支,否则继续执行后面的命令。

    (2) if-then-else-fi 语句:

            格式:
        if command; then
            commands1
        else
            commands2
        fi  
            当command命令的退出状态码为$?=0时,进入then分支,否则执行else分支命令。

    (3)if-then-elif-then-fi 语句:

            格式:
        if command1; then
            commands1
        elif command2; then
            commands2
        fi
            if分支的嵌套处理。

    2、test命令

            只能通过test命令测试跟命令退出码无关的条件。
            test命令提供了在if-then语句中测试不同条件的途径。
            test命令可以判断三类条件,数值比较,字符串比较,文件比较
            格式:
        if test condition; then
            commands
        fi
            bash shell中提供了另一种在if-then-fi语句中声明test命令的方法:
        if [ condition ]; then
            commands
        fi
            方括号定义了test命令中用到的条件,注意:左右括号和condition之间必须有一个空格

    (1)数值比较

            n1 -eq n2    检查n1是否等于n2 
            n1 -ge n2    检查n1是否大于或等于n2 
            n1 -gt n2     检查n1是否大于n2
            n1 -le n2     检查n1是否小于或等于n2
            n1 -lt n2      检查n1是否小于n2
            n1 -ne n2    检查n1是否不等于n2
        注意:数值比较只能用来处理整数,不能处理浮点数

    (2)字符串比较

            str1 = str2        检查str1是否和str2相同
            str1 != str2       检查str1是否和str2不同
            str1 < str2        检查str1是否比str2小
            str1 > str2        检查str1是否比str2大
            -n str                检查str的长度是否非0
            -z str                检查str的长度是否为0
        注意:
                在使用大于和小于号时需要使用转义字符 < 或 > ,否则会与重定向符号冲突
                比较时,会将大写字母处理成小写,但是将同样的字符串进行比较时,小写字母较大

    (3)文件比较

            -d file        检查file是否存在并且是目录
            -e file        检查file是否存在
            -f file         检查file是否存在并且是文件
            -r file         检查file是否存在并且可读
            -s file         检查file是否存在并且非空
            -w file        检查file是否存在并且可写
            -x file         检查file是否存在并且可执行
            -O file        检查file是否存在并属当前用户所有
            -G file        检查file是否存在并且默认组与当前用户相同
            file1 -nt file2    检查file1是否比file2新
            file1 -ot file2    检查file1是否比file2旧

    (4)符合条件测试

            if-then-fi语句允许使用布尔逻辑来组合测试,两种布尔逻辑符号可用:
                [ condition1 ] && [ condition2 ]
                [ condition1 ] || [ condition2 ]

    3、if-then 的高级特性

    (1)使用双圆括号

            格式:(( expression ))
            expression可以是任意的数学赋值或比比较表达式,除了test命令中的数学运算符之外,还有以下符号:
                val++/val--    后增/后减
                ++val/--val    前加/前减
                !                   逻辑取反
                ~                  按位取反
                **                 幂运算
                << / >>        按位左移/右移
                & / |              按位与/或
                && / ||           逻辑与/或
            注意:双圆括号的数学运算符不需要转义

    (2)使用双方括号

            格式:[[ expression ]]
            expression中可以使用test命令中标准的字符串比较,并且提供了模式匹配,可以利用正则表达式进行匹配
            例:
        if [[ $USER == r* ]]; then
            commands
        fi
            匹配 $USER是否是r开头,如果通过,则执行commands内容。

    4、case语句

            格式:
        case var in
        val1 | val2)    command1;;
        val3    command2;;
        *)    default command3;;
        esac
            用来解决if-then多层嵌套的问题
     
     
     
  • 相关阅读:
    Python os模块的使用
    数据分析 关于基础组件与介绍
    [SRH.Docker] HBase Java 第一天学习记录
    eclipse创建android项目失败的问题 [ android support library ]
    mysql学习总结
    celery的定时运用
    django认证
    django离线插入测试数据
    关于使用git仓库的操作
    小程序笔记
  • 原文地址:https://www.cnblogs.com/hancq/p/4976738.html
Copyright © 2011-2022 走看看