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
例子:输入英文字符串,把小写字符转换成大写
#!/bin/bash
#
read -p “Input something:” STRING
while [$STRING != ‘quit’]; do
echo $STRING | tr ‘a-z’ ‘A-Z’
read -p "Input something: " STRING
done
break:提前退出循环
continue:提前结束本轮循环,而进入下一轮循环
例子:1到1000累加,综合超过10000的时候退出循环
#!/bin/bash
#
declare -i SUM=0
for I in {1…1000}; do
let SUM+$I
if [ $SUM -gt 10000 ]; then
break
fi
done
echo $I
echo $SUM
while特殊用法一:死循环写法
while :; do
done
例子:死循环读取路径,遇到“quit”的时候退出死循环
#!/bin/bash
#
while :; do
read -p “File path:” FILEPATH
[\ $FILEPATH == ‘quit’ ] && break
if [ -e $FILEPATH ]; then
echo “$FILEPATH exists.”
else
echo “No $FILEPATH.”
fi
done
echo “Quit.”
while特殊用法二:读取文件
while read LINE; do
done < /PATH/TO/SOMEFILE
例子:循环读取文件/etc/passw内容,如果第7列为/bin/bash,那么输出第1列数据
#!/bin/bash
#
FILE=/etc/passwd
let I=0
while read LINE; do
[ `echo $LINE | awk -F : ‘{ print $3 }’`-le 505 ] && contine
[ `echo $LINE | awk -F : ‘{ print $7 }’` == ‘/bin/bash’] && echo $LINE | awk -F : ‘{print $1 }’
[ $I -gt 6 ] && break
done < $FILE