• shell脚本之if判断以及case多分支选择


    1.语法格式

    1.1 最基本的格式

    if [ condition ];then
        符合if时执行的语句
    fi

    1.2 扩展格式

    if [ condition ];then
        符合该if时执行的语句
    elif [ condition ];then
        符合该if时执行的语句 
    else
        都不符合时执行的语句 
    fi
    
    其中
    elif=else if
    elif可以有多个,也可以没有

    2.条件判断

    2.1 文件目录判断

    [ -d file ]    判断file是否目录
    [ -e file ]    判断file是否存在
    [ -f file ]    判断file是否普通文件
    [ -r file ]    判断file是否可读
    [ -s file ]    判断file是否非空
    [ -w file ]    判断file是否可写
    [ -x file ]    判断file是否可执行
    [ -S file ]    判断file是否socket文件
    [ -p file ]    判断file是否管道文件
    [ -c file ]    判断file是否字符文件
    [ -b file ]    判断file是否块文件
    [ -L file ]    判断file是否软连接

    2.2字符串判断

    [ str1 == str2 ]  判断str1和str2是否相等
    [ str1 != str2 ]  判断str1和str2是否不等
    [ str1 > str2 ]  判断str1是否比str2大,为转义符
    [ str1 < str2 ]  判断str1是否比str2小,为转义符
    [ -z str ]        判断str的长度是否为0
    [ -n str ]        判断str的长度是否为非0

    2.3 数值判断

    [ n1 -eq n2 ]   判断n1和n2是否相等
    [ n1 -ne n2 ]   判断n1和n2是否不等
    [ n1 -gt n2 ]   判断n1是否比n2大
    [ n1 -ge n2 ]   判断n1是否大于等于n2
    [ n1 -lt n2 ]   判断n1是否比n2小
    [ n1 -le n2 ]   判断n1小于等于n2

    2.4 逻辑判断

    [ ! condition ] 逻辑非,如果condition 是false则返回为真
    [ condition1 -a condition2 ] 逻辑与,condition1和condition2必须同时为真才为真
    [ condition1 -o condition2 ] 逻辑或,condition1和condition2其中有一个为真则为真
    [ condition1 ] && [ condition2 ] 布尔或,if判断时同-a,若是两个命令,则前面执行成功,才执行后面
    [ condition1 ] || [ condition2 ] 布尔与,if判断时同-o,若是连个命令,则前面执行失败,才执行后面


    3.if的高级特性:(())和[[ ]]

    3.1(())

    表示数学表达式,只用于数值

    (( n1
    == n2 )) 判断n1和n2是否相等 (( n1 != n2 )) 判断n1和n2是否不等 (( n1 > n2 )) 判断n1是否比n2大 (( n1 >= n2 )) 判断n1是否大于等于n2 (( n1 < n2 )) 判断n1是否比n2小 (( n1 <= n2 )) 判断n1是否小于等于n2 (( expr1 )) && (( expr2 )) 与,不支持-a,同(( expr1 && expr2 )) (( expr1 )) || (( expr2 )) 或,不支持-o,同(( expr1 || expr2 ))

    (())还支持以下符号

    n++     后增
    n--     后减
    ++n     先增
    --n     先减
    !       取反
    ~       位求反
    **      幂运算
    <<      左位移
    >>      右位移 
    &       位与
    |       位或
    &&      逻辑与
    ||      逻辑或

    3.2 [[ ]]

    表示高级字符串处理功能,数值和字符串都可以使用,处理数值时同(())

    [[ str1
    < str2 ]] 判断str1是否比str2大,同[ str1 < str2 ] [[ str1 > str2 ]] 判断str1是否比str2小,同[ str1 > str2 ] [[ expr1 ]] && [[ expr2 ]] 与,不支持-a,同[[ expr1 && expr2 ]] [[ expr1 ]] || [[ expr2 ]] 或,不支持-o,同[[ expr1 || expr2 ]] [[ str == a* ]] 判断字符串是否以a开头

    4. case多分支格式

    case ${var} in
        "value1" )
            满足value1时执行的语句
        ;;
        "value2" )
            满足value2时执行的语句
        ;;
         ......省略其他分支......    
        *)
            以上都不满足时执行的语句
        ;;
        esac
  • 相关阅读:
    Oralce中备份,还原数据库
    Linux基础--目录了解以及安装后的优化
    PHP学习之旅——PHP环境搭建
    在虚拟机上安装Linux系统
    Hibernate 命名查询
    MyBatis入门案例
    MyBatis中关于别名typeAliases的设置
    SpingMvc中的异常处理
    无意之间发现的Servlet3.0新特性@WebServlet
    SpringMvc核心流程以及入门案例的搭建
  • 原文地址:https://www.cnblogs.com/gudanaimei/p/13191846.html
Copyright © 2020-2023  润新知