zoukankan      html  css  js  c++  java
  • shell专题(七):流程控制(重点)

    7.1 if 判断

    1.基本语法

    if [ 条件判断式 ];then

      程序

    fi

    或者

    if [ 条件判断式 ]

      then

        程序

    fi

    注意事项:

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

    (2)if后要有空格

    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

    复制代码

    7.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

    复制代码

    7.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

    复制代码

    7.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启动报错:install failed invalid apk
    一个资源丰富的在线小程序社区推荐
    一个好用的在线微信二维码设计网站
    一个资源丰富的在线小程序社区推荐
    百度地图API的使用示例
    百度地图API的使用示例
    vue.js提交按钮时简单的if判断表达式示例
    vue.js代码开发最常见的功能集合
    如何运行vue项目(维护他人的项目)
    ES6-----学习系列七(函数扩展)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13308998.html
Copyright © 2011-2022 走看看