• [SHELL]结构化命令之条件语句


    1.if-then语句 

    #!/bin/bash
    username="root"
    if grep $username /etc/passwd
    then
    echo "there is root"
    fi

    2.if-then-else

    #!/bin/bash
    username="hahaha"
    if grep $username /etc/passwd
    then
            echo "there is hahaha"
    else
            echo "there is not hahaha"
    
    fi

    3.elif-then

    #!/bin/bash
    username1="hi"
    username2="root"
    if grep $username1 /etc/passwd
    then
            echo "there is hi"
    elif grep $username2 /etc/passwd
    then
            echo "there is root"
    else
            echo "lili"
    fi

    4.test命令

    若命令成立,返回退出状态码0

    if pwd
    then 
        echo "hello"
    fi

    bash shell 提供了另一种test的简洁语法方法,如下:

    if [ condition ]

    then 

      commands

    fi

    #!/bin/bash
    
    if [ -e $1 ]
    then
            echo $1
    else
            echo "$1 is not exist!"
    fi

    ! ! ! ! ! ! ! ! 方括号内的两边一定要有空格

    test命令可以进行三类比较;

    • 数值比较
    • 字符串比较
    • 文件比较

    1.数值比较

    #!/bin/bash
    var_1=55
    var_2=22
    if [ $var_1 -gt $var_2 ] #一定要空格
    then
            echo "var_1 > var_2"
    else
            echo "var_1 <= var_2"
    fi

    bash shell不能处理浮点数,test也不能处理浮点数,所以这里如果比较浮点数的大小会报错

    2.字符串比较

    比较大小时注意>,<符号需要转义,即[ $var_1 >$var_2 ]

    3.文件比较

    5.if-then高级特性 

    bash提供了两种if-then语句中使用的高级特性:

    • 用于数学表达式的双括号
    • 用于高级字符串处理功能的双方括号

    1.双括号

    #!/bin/bash
    var_1=44
    var_2=22
    if (( $var_1==$var_2*2 ))
    then
            echo "var_1 =2x var_2"
    else
            echo "var_1 !=2x var_2"
    fi

    2.使用双方括号(进行模式匹配)

    #!/bin/bash
    var=string
    if [[ $var==s* ]]
    then
            echo "var is $var"
    else
            echo "none"
    fi

    6.case命令

    case var in 

    pattern1 | pattern2) command;;

    pattern3) command;;

    *) default command;;

    esac

    #!/bin/bash
    var=string
    case $var in
    str) echo "str";;
    string) echo "string";;
    *) default echo "default";;
    esac
  • 相关阅读:
    移位运算符的限制
    数据类型
    正无穷和负无穷的问题
    dos下的cd指令
    c#线程的几种启动方法
    储过程实现简单的数据分页
    java 身份证15位转18位
    eclipse配置文件内存设置
    markdown语法学习
    js工具类
  • 原文地址:https://www.cnblogs.com/xhnxhnu/p/9118315.html
Copyright © 2020-2023  润新知