Shell脚本中常用的循环语句
2013-07-27 19:03
417 查看
循环命令用于将一个命令或一组命令执行指定的次数,或者一直执行直到满足某个条件为止。在Bash shell中常用的循环语句有,for循环,while循环,until循环
一、For循环语句
1、For循环的语法
for var in list
do
commands
done
2、For循环的流程图
3、For循环举例
1)、输入一个文件,判断文件是directory还是file
说明:
行3:调用了位置变量$1
行5-11:使用if语句判断$1是文件还是目录
2)、计算一个目录中有多少个文件
行7:每循环一次Count的值+1
二、While循环语句
while命令允许定义要测试的命令,然后只要定义的测试命令返回0状态值,则执行while循环中的语句,否则直接退出
1)、while循环的语法
while test command
do
oter command
done
2)、while循环的流程图
3)、while循环举例
计算100以内整数的和
如果用户的ID号为偶数,则显示其名称和shell;对所有用户执行此操作;
行3,8:将passwd中的每一行给变量LINE赋值(由于while能读到 $LINE的值,所以判断为 真,状态返回值为0)
行4,5,6:取出$LINE中用户的UID并判断UID是否是偶数,如果是偶数则显示其用户名和 shell
三、Until循环语句
Until命令允许定义要测试的命令,然后只要定义的测试命令返回非0状态值,则执行unitl循环中的语句,否则直接退出(unitl和while刚好相反)
1)、Until循环语句的语法
until test command
do
oter command
done
2)、Until循环的流程图
3)Until循环举例
计算100以内整数的和
说明:
行1,2:查看TOM用户是否登录,然后输出状态码
行3:如果状态返回值等于0则不执行下面的脚本。
行4,5:显示时间并设置sleep 5秒
行6,7:再次检查用户TOM是否登陆
一、For循环语句
1、For循环的语法
for var in list
do
commands
done
2、For循环的流程图
3、For循环举例
1)、输入一个文件,判断文件是directory还是file
[root@localhost test]# cat 3.sh #!/bin/sh for file in $1 do if [ -d "$file" ] then echo "$file is a directory" elif [ -f "$file" ] then echo "$file is a file" fi done [root@localhost test]# sh 3.sh /etc/passwd /etc/passwd is a file [root@localhost test]# sh 3.sh /etc /etc is a directory [root@localhost test]#
说明:
行3:调用了位置变量$1
行5-11:使用if语句判断$1是文件还是目录
2)、计算一个目录中有多少个文件
[root@localhost test]# cat 4.sh #!/bin/bash # Count=0 for File in /tmp/*; do file $File Count=$[$Count+1] done echo "Total files: $Count."说明:
行7:每循环一次Count的值+1
二、While循环语句
while命令允许定义要测试的命令,然后只要定义的测试命令返回0状态值,则执行while循环中的语句,否则直接退出
1)、while循环的语法
while test command
do
oter command
done
2)、while循环的流程图
3)、while循环举例
计算100以内整数的和
[root@localhost test]# cat 6.sh #!/bin/sh Sum=0 Count=1 while [ $Count -le 100 ]; do let Sum+=$Count let Count++ done echo $Sum
如果用户的ID号为偶数,则显示其名称和shell;对所有用户执行此操作;
[root@localhost test]# cat 5.sh #!/bin/sh while read LINE; do Uid=`echo $LINE | cut -d: -f3` if [ $[$Uid%2] -eq 0 ]; then echo $LINE | cut -d: -f1,7 fi done < /etc/passwd说明:
行3,8:将passwd中的每一行给变量LINE赋值(由于while能读到 $LINE的值,所以判断为 真,状态返回值为0)
行4,5,6:取出$LINE中用户的UID并判断UID是否是偶数,如果是偶数则显示其用户名和 shell
三、Until循环语句
Until命令允许定义要测试的命令,然后只要定义的测试命令返回非0状态值,则执行unitl循环中的语句,否则直接退出(unitl和while刚好相反)
1)、Until循环语句的语法
until test command
do
oter command
done
2)、Until循环的流程图
3)Until循环举例
计算100以内整数的和
[root@localhost test]# cat 6.sh #!/bin/sh Sum=0 Count=1 until [ $Count -gt 100 ]; do let Sum+=$Count let Count++ done echo $Sum每隔5秒查看hadoop用户是否登录,如果登录,显示其登录并退出;否则,显示当前时间,并说 明hadoop尚未登录:
who | grep "^TOM" &> /dev/null RetVal=$? until [ $RetVal -eq 0 ]; do date sleep 5 who | grep "^TOM" &> /dev/null RetVal=$? done echo "TOM is here."
说明:
行1,2:查看TOM用户是否登录,然后输出状态码
行3:如果状态返回值等于0则不执行下面的脚本。
行4,5:显示时间并设置sleep 5秒
行6,7:再次检查用户TOM是否登陆
相关文章推荐
- shell的一些常用的语句(if语句,变量,for、while、until语句、函数调用、脚本调用)
- Shell脚本之for、while循环语句和case分支语句
- Shell脚本常用语句
- Shell脚本入门(九) - 循环控制语句:for in
- Shell脚本的条件控制和循环语句
- shell脚本循环语句
- shell脚本之-if流程控制语句和for循环语句的使用
- Shell脚本应用及循环语句
- linux之基础shell脚本编程2 if语句循环判断
- shell脚本-循环语句
- Shell脚本中循环语句for,while,until用法
- Shell脚本循环语句——while循环
- shell脚本之循环语句
- Shell脚本的条件控制和循环语句
- shell脚本编程之循环语句学习笔记
- shell脚本循环执行mysql语句
- shell 脚本 语法之循环语句 (一)
- Shell脚本循环语句——for循环
- Shell脚本while、until循环语句简明教程
- Shell脚本for循环语句简明教程