linux循环while,linux命令:while循环
while命令简介:
linux重定向
while循环:适⽤于循环次数未知的场景,要有退出条件,否则就成为死循环。
1.命令格式:
语法:
while  CONDITION; do
statement
...
done
2.命令功能:
while循环:适⽤于循环次数未知的场景,要有退出条件,否则就成为死循环。
3.命令参数:
while  CONDITION; do        condition:进⼊循环的条件
statement
...
done
while的特殊⽤法⼀:while死循环没有循环次数,⼀直循环,直到给出中断信号
while :; do
done
while的特殊⽤法⼆:从⼀个⽂件中读取每⼀⾏赋值给变量
while read LINE; do      (read LINE 变量LINE为⽂件中的每⼀⾏进⾏循环)
done < /PATH/TO/SOMEFILE  (输⼊重定向需要读取的⽂件)
Usage:
vim showuser.sh
#!/bin/bash
#
FILE=/etc/passwd
declare -i I=0
while read LINE; do
[ `echo "$LINE" | awk -F : '{print $NF}'` == '/bin/bash' ] && echo "$LINE" |awk -F : '{print $1}'    && let I++ [ $I -ge 3 ] && break  #break 达到条件就退出循环,continue是达到条件结束本轮循环执⾏下      ⼀次循环done < $FILE
4.命令实例:
1、计算100以内整数和
[root@xuelinux test]# vim while100.sh
#!/bin/bash
#program:
#练习使⽤while循环计算1到100正整数的和
#history  donggen  2016-11-02-21:21
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash export PATH
declare -i I=1
declare -i SUM=0
while [ $I -le 100 ]; do
let SUM+=$I
let I++
done
echo "$SUM"
[root@xuelinux test]# chmod +x while100.sh
[root@xuelinux test]# ./while100.sh
5050                    从1到100的正整数和为5050
[root@xuelinux test]#
2、如果提⽰⽤户输⼊字符,如果不是quit就把⼩写字母全部变成⼤写字母,
如果是quit则退出脚本。
[root@xuelinux test]# vim whilequit.sh
#!/bin/bash
#program:
#如果输⼊的不是quit则把⼩写字母全部换成⼤写字母,quit退出循环
#history  donggen  2016-11-02-21:31
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash export PATH
read -p "Input something:" SCRIPT
while [ $SCRIPT != "quit" ]; do
echo "$SCRIPT" | tr 'a-z' 'A-Z'
read -p "Input something:" SCRIPT
done
[root@xuelinux test]# chmod +x whilequit.sh
[root@xuelinux test]# ./whilequit.sh
Input something:abc
ABC
Input something:eroqe
EROQE
Input something:quit
[root@xuelinux test]#
3、写⼀个脚本,查看⼀个⽤户是否登录,如果没有登录继续查看,如果登录则提⽰⽤户已经登录并退出循环。
[root@xuelinux test]# vim whiledonggen.sh
#!/bin/bash
#program:
#查看⽤户是否登录
#history  donggen  2016-11-02-21:45
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash export PATH
USERNUM=donggen
who | grep "$USERNUM" &> /dev/null
NUM=$?
while [ $NUM -ne 0 ]; do
echo "$USERNUM is not login."
sleep 3
who | grep "$USERNUM" &> /dev/null
NUM=$?
done
echo "the $USERNUM is login."
[root@xuelinux test]# chmod +x whiledonggen.sh
[root@xuelinux test]# ./whiledonggen.sh
donggen is not login.    donggen ⽤户没有登录时⼀直提⽰没有登录
donggen is not login.
donggen is not login.
donggen is not login.
the donggen is login.  donggen⽤户登录后提⽰登录并退出循环。
[root@xuelinux test]#

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。