zoukankan      html  css  js  c++  java
  • shell编程while

    脚本编程:
        顺序结构
        选择结构
            if
            case
        循环结构
            for
            while
            until
            
    while循环:适用于循环次数未知的场景,要有退出条件
    语法:
        while CONDITION; do
          statement
          ...
        done
        
    计算100以内所有正整数的和

    #!/bin/bash
    declare -i I=1
    declare -i SUM=0

    while [ $I -le 100 ]; do
      let SUM+=$I
      let I++
    done

    echo $SUM

    练习:转换用户输入的字符为大写,除了quit:
    #!/bin/bash
    #
    read -p "Input something: " STRING

    while [ $STRING != 'quit' ]; do
      echo $STRING | tr 'a-z' 'A-Z'
      read -p "Input something: " STRING
    done

    练习:每隔5秒查看hadoop用户是否登录,如果登录,显示其登录并退出;否则,显示当前时间,并说明hadoop尚未登录:
    #!/bin/bash
    #
    who | grep "hadoop" &> /dev/null
    RETVAL=$?

    while [ $RETVAL -ne 0 ]; do
      echo "`date`, hadoop is not log."
      sleep 5
      who | grep "hadoop" &> /dev/null
      RETVAL=$?
    done

    echo "hadoop is logged in."

    写一个脚本:
    1) 显示一个菜单给用户:
    d|D) show disk usages.
    m|M) show memory usages.
    s|S) show swap usages.
    *) quit.
    2) 当用户给定选项后显示相应的内容;
       
    扩展:
        当用户选择完成,显示相应信息后,不退出;而让用户再一次选择,再次显示相应内容;除了用户使用quit;
    #!/bin/bash
    #
    cat << EOF
    d|D) show disk usages.
    m|M) show memory usages.
    s|S) show swap usages.
    *) quit.
    EOF

    read -p "Your choice: " CHOICE
    while [ $CHOICE != 'quit' ];do
      case $CHOICE in
      d|D)
        echo "Disk usage: "
        df -Ph ;;
      m|M)
        echo "Memory usage: "
        free -m | grep "Mem" ;;
      s|S)
        echo "Swap usage: "
        free -m | grep "Swap" ;;
      *)
        echo "Unknown.." ;;
      esac

    read -p "Again, your choice: " CHOICE
    done

    练习:写一个脚本
    从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件;
    read:
        -p “PROMPT": 给出提示

  • 相关阅读:
    2018-2019-2 网络对抗技术 20165230 Exp2 后门原理与实践
    BZOJ2038: [2009国家集训队]小Z的袜子(hose)
    BZOJ3262陌上花开 树状数组+Treap
    BZOJ1468 Tree 点分治入门练习题
    BZOJ2152 聪聪可可 点分治入门
    BZOJ3506 BZOJ1552 排序机械臂 Splay区间翻转(数组版自底向上的写法)
    BZOJ3196: Tyvj 1730 二逼平衡树 (线段树 + Treap 练习题)
    ZOJ2112 Dynamic Rankings 动态区间Kth(单点修改) 线段树+Treap写法
    OO第4单元总结&课程总结
    OO第三单无总结
  • 原文地址:https://www.cnblogs.com/jjzd/p/5792177.html
Copyright © 2011-2022 走看看