Bash shell脚本While循环

时间:2019-11-20 08:53:04  来源:igfitidea点击:

在Linux shell脚本中,如何写while循环语句?
bash shell中while 循环的语法是什么?
如何使用shell while语句设置无限循环?
bash shell while循环示例

bash shell while循环是一个控制流语句,它允许根据给定条件重复执行代码或命令。

bash while循环语法

shell脚本中while的语法如下:

while [ condition ]
do
   command1
   command2
   command3
done

如果condition是真,则重复执行command1到command3。
while循环的参数condition可以是任何布尔表达式。

还可以把他们写在一行中:

while [ condition ]; do commands; done
while control-command; do COMMANDS; done

shell 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

shell while循环示例-逐行读取文本文件的数据

#!/bin/bash
FILE=
# 通过文件描述符来读取 $FILE
exec 3<&0
exec 0<$FILE
while read line
do
	# use $line variable to process line
	echo $line
done
exec 0<&3

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

bash shell while死循环

如果未指定条件,则while循环将是一个死循环:

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

while循环中的break语句

break语句用于提前退出while循环

while [ condition ]
do
   statements1     
   statements2
  if (condition)
  then
	break       	   #提前退出循环
  fi
  statements3          
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

while循环中的continue语句

continue语句用于结束当前迭代,重新开始新一轮迭代:

while [ condition ]
do
  statements1     
  statements2
  if (condition)
  then
	continue   #不执行statements3,重新开始新一轮迭代。
  fi
  statements3
done