阅 读 文 章

shell 5

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(socketstrem) | 时间:2007-05-27 | 浏览:人次 ]


shell编程之循环语句(2)

7.for语句

对列表的每一条目都进行一次循环过程,每完成一次循环过程就将var赋予列表中下一个条目,直到完成最后一个条目的循环为止

语法: 例子:

for var in list$ cat test_for
do for X in 1 2 3 4 5
list A do
done echo "2 * $X is \c"
 let X=X*2
 echo $X
 done

 $ test_for
 2 * 1 is 2
 2 * 2 is 4
 2 * 3 is 6
 2 * 4 is 8
 2 * 5 is 10
 

 

在上例中,关键字为for,in,do和done,var代表一个shell变量的名字,这个变量的赋值会贯穿for循环的执行过程中,list是一串由空格或者tab分割开的字符串,在每一次循环执行都要将一个串赋值给var。

for循环的执行过程如下:

1.shell变量var被设置等于list中的第一个字符。

2.list A中的命令会被执行。

3.shell变量var被设置等于list中下一个字符。

4.list A中的命令被执行。

5.循环会持续执行,直到每一个list中的条目都执行过循环为止。

 

8.for循环的例子

例A:

$ cat example_A
for NAME in $(grep home /etc/passwd | cut -f1 -d:)
do
mail $NAME < mtg.minutes
echo mailed mtg.minutes to $NAME
done

 

例B

$ cat example_B
for FILE in *
do

if
test -d $FILE
then
ls -F $FILE

fi

done
 

for结构是一种非常灵活的循环结构,它能够让循环贯穿任何能产生的列表。列表能很容易地用命令替代来产生,就像第一个例子中一样。使用管道和过滤器,能够从任何事产生一个列表。

如果你要求多次存取相同的列表,你也许想要将它存储到个文件中。你可以使用cat命令来为你的for循环产生列表,正如下例所示:

$ cat students
user1
user2
user3
user4

$ cat for_student_file_copy
for NAME in $(cat_students)
do
cp test.file /home/$NAME
chown $NAME /home/$NAME/test.file
chmod g-w,o-w /home/$NAME/test.file
echo done $NAME
done

$

存取命令行参数

你可以从命令行参数来产生list:

for i in $*或者for i
do do
cp $i $HOME/backupscp $i $HOME/backups
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 循环 命令 一个 执行 continue 过程 这个 done do 中止

上一篇:shell 3

下一篇:sn

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.