Bash While循环示例
时间:2020-01-09 10:37:28 来源:igfitidea点击:
如何在Linux/UNIX操作系统下使用bash while循环重复执行特定任务?
如何使用while语句设置无限循环?
您可以提供while循环示例吗?
" bash while 循环"是一个控制流语句,它允许根据给定条件重复执行代码或命令。
例如,运行echo命令5次,或者逐行读取文本文件,或者评估脚本在命令行上传递的选项。
bash while循环语法
语法如下:
while [ condition ] do command1 command2 command3 done
command1到command3将重复执行直到条件为真。
while循环的参数可以是任何布尔表达式。
当条件从不评估为false时,将发生无限循环。
这是while循环一线语法:
while [ condition ]; do commands; done while control-command; do COMMANDS; done
例如,以下while循环将在屏幕上打印欢迎信息5次:
#!/bin/bash x=1 while [ $x -le 5 ] do echo "Welcome $x times" x=$(( $x + 1 )) done
这是上面的代码,只不过是一个班轮而已:
x=1; while [ $x -le 5 ]; do echo "Welcome $x times" $(( x++ )); done
这是一个使用while循环来计算阶乘的示例shell代码:
#!/bin/bash counter= factorial=1 while [ $counter -gt 0 ] do factorial=$(( $factorial * $counter )) counter=$(( $counter - 1 )) done echo $factorial
要运行,只需键入:
$ chmod +x script.sh $ ./script.sh 5
在我的Ubuntu Linux桌面上运行的while循环
while循环通常用于从文件逐行读取数据:
#!/bin/bash FILE= # 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
您可以使用while循环轻松评估在命令行中为脚本传递的选项:
...... .. 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 ....... ..
如何将while用作无限循环?
可以使用空表达式创建无限的while,例如:
#!/bin/bash while : do echo "infinite loops [ hit CTRL+C to stop]" done
带break语句的条件while循环退出
您可以使用whil循环中的break语句来提前退出。
您可以使用break从WHILE中退出。
while循环内的一般break语句如下:
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
在此示例中,当用户输入-1时,break语句将跳过while循环,否则它将继续添加两个数字:
#!/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
早期继续执行continue语句
要恢复封闭的WHILE循环的下一次迭代,请使用Continue语句,如下所示:
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