• (五)流程控制-重点


    5.1 if 判断

    1.基本语法

    if [ 条件判断式 ];then

      程序

    fi

    或者

    if [ 条件判断式 ]

      then

        程序

    fi

    注意事项:

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

    2if后要有空格

    2.案例实操

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

    [atguigu@hadoop101 datas]$ touch if.sh

    [atguigu@hadoop101 datas]$ vim if.sh

     

    #!/bin/bash

     

    if [ $1 -eq "1" ]

    then

            echo "banzhang zhen shuai"

    elif [ $1 -eq "2" ]

    then

            echo "cls zhen mei"

    fi

     

    [atguigu@hadoop101 datas]$ chmod 777 if.sh

    [atguigu@hadoop101 datas]$ ./if.sh 1

    banzhang zhen shuai

    5.2 case 语句

    1.基本语法

    case $变量名 in

      "1"

        如果变量的值等于值1,则执行程序1

        ;;

      "2"

        如果变量的值等于值2,则执行程序2

        ;;

      …省略其他分支

      *

        如果变量的值都不是以上的值,则执行此程序

        ;;

    esac

    注意事项:

    1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

    2) 双分号;;”表示命令序列结束,相当于java中的break

    3) 最后的*)”表示默认模式,相当于java中的default。

    2.案例实操

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

    [atguigu@hadoop101 datas]$ touch case.sh

    [atguigu@hadoop101 datas]$ vim case.sh

     

    !/bin/bash

     

    case $1 in

    "1")

            echo "banzhang"

    ;;

     

    "2")

            echo "cls"

    ;;

    *)

            echo "renyao"

    ;;

    esac

     

    [atguigu@hadoop101 datas]$ chmod 777 case.sh

    [atguigu@hadoop101 datas]$ ./case.sh 1

    1

    5.3 for 循环

    1.基本语法1

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

      do

        程序

      done

    2.案例实操

    1)从1加到100

    [atguigu@hadoop101 datas]$ touch for1.sh

    [atguigu@hadoop101 datas]$ vim for1.sh

     

    #!/bin/bash

     

    s=0

    for((i=0;i<=100;i++))

    do

            s=$[$s+$i]

    done

    echo $s

     

    [atguigu@hadoop101 datas]$ chmod 777 for1.sh

    [atguigu@hadoop101 datas]$ ./for1.sh

    “5050”

    3.基本语法2

    for 变量 in 1 2 3…

      do

        程序

      done

    4.案例实操

    1)打印所有输入参数

    [atguigu@hadoop101 datas]$ touch for2.sh

    [atguigu@hadoop101 datas]$ vim for2.sh

     

    #!/bin/bash

    #打印数字

     

    for i in $*

        do

          echo "ban zhang love $i "

        done

     

    [atguigu@hadoop101 datas]$ chmod 777 for2.sh

    [atguigu@hadoop101 datas]$ bash for2.sh cls xz bd

    ban zhang love cls

    ban zhang love xz

    ban zhang love bd

    2比较$*$@区别

    (a)$*$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数

    [atguigu@hadoop101 datas]$ touch for.sh

    [atguigu@hadoop101 datas]$ vim for.sh

     

    #!/bin/bash

     

    for i in $*

    do

          echo "ban zhang love $i "

    done

     

    for j in $@

    do      

            echo "ban zhang love $j"

    done

     

    [atguigu@hadoop101 datas]$ bash for.sh cls xz bd

    ban zhang love cls

    ban zhang love xz

    ban zhang love bd

    ban zhang love cls

    ban zhang love xz

    ban zhang love bd

    (b)当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数

    [atguigu@hadoop101 datas]$ vim for.sh

     

    #!/bin/bash

     

    for i in "$*"

    #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次

            do

                    echo "ban zhang love $i"

            done

     

    for j in "$@"

    #$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次

            do

                    echo "ban zhang love $j"

    done

     

    [atguigu@hadoop101 datas]$ chmod 777 for.sh

    [atguigu@hadoop101 datas]$ bash for.sh cls xz bd

    ban zhang love cls xz bd

    ban zhang love cls

    ban zhang love xz

    ban zhang love bd

    5.4 while 循环

    1.基本语法

    while [ 条件判断式 ]

      do

        程序

      done

    2.案例实操

    1)从1加到100

    [atguigu@hadoop101 datas]$ touch while.sh

    [atguigu@hadoop101 datas]$ vim while.sh

     

    #!/bin/bash

    s=0

    i=1

    while [ $i -le 100 ]

    do

            s=$[$s+$i]

            i=$[$i+1]

    done

     

    echo $s

     

    [atguigu@hadoop101 datas]$ chmod 777 while.sh

    [atguigu@hadoop101 datas]$ ./while.sh

    5050

  • 相关阅读:
    Android:Butter Knife 8.0.1配置
    webAPI获得链接客户端IP地址
    解决WebClient或HttpWebRequest首次连接缓慢问题
    Android Studio中有用的快捷键栏
    SQL十进制和十六进制相互转换
    SQL分组查询每组前几条数据
    POJ 1011 Sticks
    POJ 1144 Network(割点)
    求无向图中的割边(桥)
    POJ 2553 The Bottom of a Graph
  • 原文地址:https://www.cnblogs.com/hg-super-man/p/10513958.html
Copyright © 2020-2023  润新知