zoukankan      html  css  js  c++  java
  • bash shell while语法

    在编写脚本时,一定要注意空格

    基本语法:

    while [ condition ]
    do
       command1
       command2
       command3
    done
    condition为true时命令1到命令3将会一直执行,知道条件为false ,例如:
    
    #!/bin/bash
    x=1
    while [ $x -le 5 ]
    do
      echo "Welcome $x times"
      x=$(( $x + 1 ))
    done

    Here is a sample shell code to calculate factorial using while loop:

    #!/bin/bash
    counter=$1
    factorial=1
    while [ $counter -gt 0 ]
    do
       factorial=$(( $factorial * $counter ))
       counter=$(( $counter - 1 ))
    done
    echo $factorial

    To run just type:
    $ chmod +x script.sh
    $ ./script.sh 5

    Output:

    120

    While loops are frequently used for reading data line by line from file:

    #!/bin/bash
    FILE=$1
    # read $FILE using the file descriptors
    exec 3<&0
    exec 0<$FILE
    while read line
    do
    	# use $line variable to process line
    	echo $line
    done
    exec 0<&3

    You can easily evaluate the options passed on the command line for a script using while loop:

    ......
    ..
    while getopts ae:f:hd:s:qx: option
    do
            case "${option}"
            in
                    a) ALARM="TRUE";;
                    e) ADMIN=${OPTARG};;
                    d) DOMAIN=${OPTARG};;
                    f) SERVERFILE=$OPTARG;;
                    s) WHOIS_SERVER=$OPTARG;;
                    q) QUIET="TRUE";;
                    x) WARNDAYS=$OPTARG;;
                    ?) usage
                        exit 1;;
            esac
    done
    .......
    ..

    How do I use while as infinite loops?

    Infinite for while can be created with empty expressions, such as:

    #!/bin/bash
    while :
    do
    	echo "infinite loops [ hit CTRL+C to stop]"
    done

    Conditional while loop exit with break statement

    You can do early exit with the break statement inside the whil loop. You can exit from within a WHILE using break. General break statement inside the while loop is as follows:

    while [ condition ]
    do
       statements1      #Executed as long as condition is true and/or, up to a disaster-condition if any.
       statements2
      if (disaster-condition)
      then
    	break       	   #Abandon the while lopp.
      fi
      statements3          #While good and, no disaster-condition.
    done

    In this example, the break statement will skip the while loop when user enters -1, otherwise it will keep adding two numbers:

    #!/bin/bash
     
    while :
    do
    	read -p "Enter two numnbers ( - 1 to quit ) : " a b
    	if [ $a -eq -1 ]
    	then
    		break
    	fi
    	ans=$(( a + b ))
    	echo $ans
    done

    Early continuation with the continue statement

    To resume the next iteration of the enclosing WHILE loop use the continue statement as follows:

    while [ condition ]
    do
      statements1      #Executed as long as condition is true and/or, up to a disaster-condition if any.
      statements2
      if (condition)
      then
    	continue   #Go to next iteration of I in the loop and skip statements3
      fi
      statements3
    done


    while [ condition ]
    do
       statements1      #Executed as long as condition is true and/or, up to a disaster-condition if any.
       statements2
      if (disaster-condition)
      then
    	break       	   #Abandon the while lopp.
      fi
      statements3          #While good and, no disaster-condition.
    done
  • 相关阅读:
    c 语言学习第一天
    react+antd 使用脚手架动态修改主题色
    用 vitePress 快速创建一个文档项目
    react懒加载,减少首屏加载时间
    react-devtools安装以及使用中的问题
    react为什么不用数组的下标来绑定key
    三种js缓存(笔记)
    关于浏览器自动记住登录帐号和密码后, 一些输入框会显示帐号密码信息
    H5 Hybrid开发-前端资源本地化方案纪要
    webpack + ts 配置路径别名无死角方法总结
  • 原文地址:https://www.cnblogs.com/liang123/p/6325152.html
Copyright © 2011-2022 走看看