天天看点

for循环与while循环

for循环

格式:for 变量名 in 列表

do 命令1 ......

done

当变量值在列表里, for循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的 shell命令和语句。变量名为任何单词。 in列表用法是可选的,如果不用它, for循环使用命令行的位置参数。

简单的for循环

循环输出12345

for  loop in 1 2 3 4 5

do

echo $loop

相对字符串来说 变量后边的赋值也可以是字符串,或者是字符串和变量的结合

比如:echo "this is $loop"

或者在执行命令中输出ls的结果

比如:for loop in `ls`

do 

对for循环使用参数

在for循环中省去 in列表选项时,它将接受命令行位置参数作为参数。实际上即指明:

for

params in"$@"

params in"$*"

for params

echo this is test $params 

在运行脚本时,后边直接传入参数 进行输出即可

比如在循环中使用find命令 进行查询

for loop

echo find / -name $loop -print

使用for进行连接

hosts=172.16.8.44

for loop in $hosts

ping -c 2 $loop

循环计数

count=0

for files in *

count=`expr $count + 1`

echo "there is $count files in `pwd`"

for循环和本地文档

在f o r循环体中可使用任意命令。下面的例子中,一个变量包含所有当前登录用户。使用who命令并结合 awk语言可实现此功能。然后 for循环循环每一用户,给其发送一个邮件,邮件信息部分用一个本地文档完成.

whos_on=`who -u | awk {print $1}`

for user in $whos_on

mail $user << mayday

hello,dear!

do you see this email!

mayday

$LOGNAME

for循环嵌入

嵌入循环可以将一个 for循环嵌在另一个 for循环内:

for 变量名1 in 列表1   

 do

     for 变量名2   i n 列表2   

   do

          命令1...

   done

for file in `ls`

   for dir in `find $file -type d `

       number=`find $dir -type d | wc -l`

       echo "there is $number directories in `pwd` ,they are $dir"

       done

while循环

while循环用于不断执行一系列命令,也用于从输入文件中读取数据,其格式为:

while 命令

命令1

命令2

...

虽然通常只使用一个命令,但在 while和do之间可以放几个命令。命令通常用作测试条件。

只有当命令的退出状态为0时,do和done之间命令才被执行,如果退出状态不是0,则循环终止。

命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。

简单的while循环

while [ $count lt 5 ]

echo $count

使用while循环读键盘输入

echo "type <ctrl-D> to terminate"

echo -n "please input anykey: "

while read key

echo "yes, this is my input: $key"

用while循环从文件中读取数据。可以用一个变量保存每行数据,当不再有读取数据时条件为真。 

while循环使用输入重定向以保证从文件中读取数据。注意整行数据被设置为单变量 $line。

while read line

echo $line

done < name.txt

使用IFS读文件

输出时要去除冒号域分隔符,可使用变量 I F S。在改变它之前保存 I F S的当前设置。然后

在脚本执行完后恢复此设置。使用 I F S可以将域分隔符改为冒号而不是空格或 t a b键。

本文转自岁月丶倾城博客51CTO博客,原文链接http://blog.51cto.com/alca0126/1396693如需转载请自行联系原作者

laihuadongcto

上一篇: css3D的魅力
下一篇: 控制流结构