美文网首页我用 Linux
shell(三)——循环结构和函数

shell(三)——循环结构和函数

作者: amyhy | 来源:发表于2017-09-19 10:07 被阅读18次

    循环结构

    1)  循环操作是什么? 
    2) 循环开始的条件
    3)  循环终止的条件
    
    for, while, util
    

    for循环结构

    for循环: 明确知道循环的次数
    
    for 变量名称 in 变量取值; do
        statement
        statement
    done
    
    
    for 变量名称 in 变量取值 
    do
        statement
        statement
    done
    
    变量取值 
        数字
            10 20 30
            花括号展开   {1..100}
            [root@shell shell]# seq 10
            [root@shell shell]# seq 2 10
            [root@shell shell]# seq 1 2 10
    

    编写脚本, 计算1---100的和

    #!/bin/bash
    sum=0
    for i in {1..100};do
      let sum=$sum+$i
    done
    echo $sum
    

    编写脚本, 计算1---100所有奇数的和

    #!/bin/bash
    
    sum=0
    
    for i in `seq 100`;do
     let ys=$i%2
     if [ $ys -ne 0 ];then
      let sum=$sum+$i
     fi
    done
    
    echo $sum
    

    中断循环语句:

    break               中断整个循环
    continue            中断本次循环
    

    break
    中断的例子

    # !/bin/bash
    
    sum=0
    
    for i in `seq 100`;do
        let sum=$sum+$i
        if [ $sum -ge 3000 ];then
            echo "$i,$sum"
            break
        fi
    done
    

    运行结果

    student@student-VirtualBox:/tmp$ ./t1.sh 
    77,3003
    
    

    while循环

    用法1:
    while CONDITION; do
        statement
        statement
        ....
        change_condition_statement
    done
    

    编写脚本,计算1--100的和

    # !/bin/bash
    
    sum=0
    i=1
    
    while [ $i -le 100 ];do
        sum=$((sum+i))
        let i++
    done
    echo $sum
    

    util循环:

    util CONDITION; do
        statement
        statement
        ....
    done
    
    条件为假循环开始,条件为真循环结束 
    

    函数

    定义函数

    方法1:
    
    函数名称() {    
    }
    
    方法2:
    function 函数名称{
    }
    

    编写脚本,提供给用户功能菜单,包括创建目录及删除目录,根据用户的需求分别实现创建、删除目录功能,创建、删除目录的功能使用函数实现

    #!/bin/bash
    
    createdir() {
       if [ -d $1 ]; then
        echo "目录$1已经存在"
       else
            mkdir -p $1
            echo "目录$1创建完成."
       fi
    }
    
    removedir() {
    
       read -p "输入目录名称:" dir
       if [ -d $dir ]; then
          rm -rf $dir
          echo "目录$dir已经删除"
       else
          echo "目录$dir不存在"
       fi
    }
    
    showmenu() {
    cat << eof
    ==========目录基本管理============
    1   创建目录
    2   删除目录
    q   退出  
    eof
    }
    
    while true; do
        showmenu
        echo
        read -p "请输入你的选择:" choice
    
        case $choice in
          1)
            read -p "请输入目录名称:" dir
        createdir $dir
        ;;
          2)
        removedir
        ;;
          q)
        exit 0
        ;;
        esac
    done
    

    相关文章

      网友评论

        本文标题:shell(三)——循环结构和函数

        本文链接:https://www.haomeiwen.com/subject/bmcisxtx.html