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