• Shell 运算符/条件判断/流程控制


    一、运算符

    1、基本语法

    1. "$((运算式))" 或 "$[运算式]"
    2. expr + , - , *, /, % 加,减,乘,除,取余

    注意:expr 运算符间要有空格

    2、案例实操

    (1)计算3+2的值

    [root@centos7 shell_test]# expr 2 + 3
    5

    (2)计算3-2的值

    [root@centos7 shell_test]# expr 3 - 2
    1

    (3)计算(2+3)X4的值

    • expr一步完成计算
    [root@centos7 shell_test]# expr `expr 2 + 3` * 4
    20
    • 采用$[运算式]方式
    [root@centos7 shell_test]#  S=$[(2+3)*4]
    [root@centos7 shell_test]#  echo $S

    二、if 判断

    1、基本语法

    if [ 条件判断式 ];then
        程序
    fi
    
    或者
    
    if [ 条件判断式 ]
    then
        程序
    fi

    注意事项:

    1. [ 条件判断式 ],中括号和条件判断式之间必须有空格
    2. if 后要有空格

    2、案例实操

    输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。

    [root@centos7 shell_test]#  touch if.sh
    [root@centos7 shell_test]#  vim if.sh
    
    #!/bin/bash
    
    if [ $1 -eq "1" ]
    then
            echo "banzhang zhen shuai"
    elif [ $1 -eq "2" ]
    then
            echo "cls zhen mei"
    fi

    三、case 语句

    1、基本语法

    case $变量名 in 
    "值1") 
        如果变量的值等于值1,则执行程序1 
    ;; 
    "值2") 
        如果变量的值等于值2,则执行程序2 
    ;; 
        …省略其他分支… 
    *) 
        如果变量的值都不是以上的值,则执行此程序 
    ;; 
    esac

    注意事项:

    1. case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
    2. 双分号“;;”表示命令序列结束,相当于java中的break。
    3. 最后的“*)”表示默认模式,相当于java中的default。

    2、案例实操

    输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。

    [root@centos7 shell_test]#  touch case.sh
    [root@centos7 shell_test]#  vim case.sh
    
    #!/bin/bash
    
    case $1 in
    "1")
        echo "banzhang"
    ;;
    "2")
        echo "cls"
    ;;
    *)
        echo "renyao"
    ;;
    esac

    四、for 循环

    1、基本语法1

    for (( 初始值;循环控制条件;变量变化 ))
    do
        程序
    done

    2、案例实操

    从1加到100

    [root@centos7 shell_test]#  touch for1.sh
    [root@centos7 shell_test]#  vim for1.sh
    
    #!/bin/bash
    
    s=0
    for((i=0;i<=100;i++))
    do
        s=$[$s+$i]
    done
    echo $s

    3、基本语法2

    for 变量 in 值1 值2 值3…
    do
        程序
    done

    4、案例实操

    打印所有输入参数

    #!/bin/bash
    #打印数字
    
    for i in $*
    do
            echo "ban zhang love $i "
    done
    
    echo "================================"
    
    for i in $@
    do
            echo "ban zhang love $i "
    done
    
    echo "================================"
    
    for i in "$*"
    do
            echo "ban zhang love $i "
    done
    
    echo "================================"
    
    for i in "$@"
    do
            echo "ban zhang love $i "
    done

    测试

    [root@centos7 shell_test]# sh for2.sh 11 22 33 44
    ban zhang love 11 
    ban zhang love 22 
    ban zhang love 33 
    ban zhang love 44 
    ================================
    ban zhang love 11 
    ban zhang love 22 
    ban zhang love 33 
    ban zhang love 44 
    ================================
    ban zhang love 11 22 33 44 
    ================================
    ban zhang love 11 
    ban zhang love 22 
    ban zhang love 33 
    ban zhang love 44 

    5、比较$*和$@区别

    1. $*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。
    2. 当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。

    五、while 循环

    1、基本语法

    while [ 条件判断式 ]
    do
        程序
    done

    2、案例实操

    从1加到100

    [root@centos7 shell_test]#  touch while.sh
    [root@centos7 shell_test]#  vim while.sh
    
    #!/bin/bash
    s=0
    i=1
    while [ $i -le 100 ]
    do
            s=$[$s+$i]
            i=$[$i+1]
    done
    
    echo $s
  • 相关阅读:
    一次函数(好难的一次函数)
    脱水缩合(大搜索)
    背单词
    仙人掌(cactus)
    LYK 快跑!(LYK别打我-)(话说LYK是谁)
    巧克力棒
    选数字(贪心+枚举)
    看程序写结果(program)
    np问题
    IUYYLIUIU
  • 原文地址:https://www.cnblogs.com/jwen1994/p/14913934.html
Copyright © 2020-2023  润新知