您的位置:首页 > 运维架构 > Shell

shell脚本之循环语句for,while,until用法的详解

2014-08-02 15:39 1241 查看
关于Linux中循环语句for,while,until用法的详解
for,while,until这些循环结构体在Linux的script中是使用非常多的,所以掌握他们的用法是很必要的,以下是我整理的关于这三个命令的一些用法,希望对需要的人有帮助。一、for循环结构一 :
for 变量 in 列表 ; do

循环体

done

结构二:
for ((expr1;expr2;expr3)); do

循环体
done

练习提高:

1、计算1-10的和sum;
结构一:
#!/bin/bash
declare -i sum=0
for i in `seq 1 10`
do
let sum=$sum+$i
done
echo $sum
结构二:
#!/bin/bash
declare -i sum=0
for ((i=0;i<=10;i++))
do
sum+=$i
done
echo $sum


2、计算1-1000的和sum;
#!/bin/bash
declare -i sum=0
for i in {1..1000}
do
sum+=$i
done
echo $sum

3、 写一个脚本:(1)、设定变量FILE的值为/etc/passwd(2)、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如: Hello, root, your shell: /bin/bash(3)、统计一共有多少个用户(4)、只向默认shell为bash的用户问声好
#!/bin/bash
line=`wc -l /etc/passwd | awk '{print $1}'`
for i  in `seq 1 $line`
do
echo "Hello, ` head -n $i /etc/passwd |tail -1 | awk -F : '{print $1}'`, your shell: `head -n $i /etc/passwd |tail -1 | awk -F : '{print $7}'` "
done
echo "system have $line user。"
line1=`grep "bash$" /etc/passwd | wc -l`
for i in `seq 1 $line1`
do
echo  "Hello, `grep "bash$" /etc/passwd | head -n $i | tail -1 | awk -F: '{print $1}'`"
done


4、写一个脚本:计算100以内所有能被3整除的正整数的和;
#!/bin/bash
declare -i sum=0
for i in `seq 1 100`
do
if [ $[$i%3] -eq 0 ]
then
sum+=$i
fi
done
echo $sum
~

二、while循环 while循环适用于循环次数未知的场景,要有退出条件。
进入循环:条件满足
退出循环:条件不满足
用法:
while condition ; do
循环体

done


练习提高:
1、计算100以内所有正整数的和sum;

2、 连续转换输入的字符,小写变大写,当输入quit时exit





3、 每5秒钟检测hadoop用户是否登录,并显示登录的时间



三、until循环until的用法其实是跟while差不多的,只是在条件满足上有所不同。
进入循环:条件不满足
退出循环: 条件满足
用法:
until condition ; do
循环体


done


练习提高:

1、计算100以内所有正整数的和sum;





本文出自 “天道酬勤” 博客,请务必保留此出处http://luzhi1024.blog.51cto.com/8845546/1534176
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: