Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Shell > 正文

Shell语言十五 for循环实例演示(二)

时间:2014-05-31 00:44 来源:未知 作者:www.51ou.com 阅读:

例6:写一个脚本,使用for循环显示用户userA、userB和userC各自的id号;

 

使用 id -u 命令可以显示用户的id号,故此脚本可以写成:

 

# nano showID.sh

 

1
2
3
4
5
6
#!/bin/bash
 
for I in A B C; do
  id -u user$I
done
unset I

 

—————————————执行结果—————————————

 

1
2
3
4
[root@localhost ~]# ./showID.sh
3006
3007
3008

 

如果能指明ID号具体属于哪个用户,用户体验会更好,故可对此脚本加以改进:

 

1
2
3
4
5
6
#!/bin/bash
 
for I in A B C; do
  echo "user$I: `id -u user$I`"
done
unset I

 

—————————————执行结果—————————————

 

1
2
3
4
[root@localhost ~]# ./showID.sh
userA: 3006
userB: 3007
userC: 3008

 

例7:写一个脚本,使用for循环分别统计/usr、/var、/bin、/sbin目录下各自的文件个数;

 

使用ls 命令可以列出目录下的所有文件,在将结果通过管道传递给wc命令,即可以计算出文件个数,故此脚本可以写成:

# nano countDir.sh

1
2
3
4
5
6
#!/bin/bash
 
for Dir in /usr /var /bin /sbin;do
  echo -e “\t$Dir: `ls $Dir | wc -l`”
done
unset Dir

 

—————————————执行结果—————————————

1
2
3
4
5
6
 
[root@localhost ~]# ./countDir.sh
        /usr: 12
        /var: 21
        /bin: 113
        /sbin: 284

 

 

例8:写一个脚本, 使用for循环,分别将userA、userB和userC加入到testgrp组中,以其为额外组;

testgrp这个组不存在,故需要先建立该组。建立该组应该在循环体外面,因为如果建在循环体里面,该组将被创建三次,这是不合理的,故此脚本可以写成:

 

# nano testgrpAdd.sh

 

1
2
3
4
5
6
7
#!/bin/bash
groupadd testgrp
 
for User in userA userB userC; do
  usermod -a -G testgrp $User
done
unset User

 

—————————————执行结果—————————————

 

1
2
3
4
5
6
7
[root@localhost ~]# ./testgrpAdd.sh
[root@localhost ~]# id userA
uid=3006(userA) gid=3006(userA) groups=3006(userA),5002(testgrp)
[root@localhost ~]# id userB
uid=3007(userB) gid=3007(userB) groups=3007(userB),5002(testgrp)
[root@localhost ~]# id userC
uid=3008(userC) gid=3008(userC) groups=3008(userC),5002(testgrp)

 

例9:写一个脚本,使用for循环,将"Hello Linux","Hello World!", "GNU is Not Unix". 三行内容添加至/tmp/test.txt文件;添加完成后,显示/tmp/test.txt文件的内容;

 

这里可以将要显示的内容作为变量进行循环;向已存在的文件中追加内容可以使用 >>, 故此脚本可以写成:

 

# nano showHello.sh

 

1
2
3
4
5
6
7
#!/bin/bash
for Line in "Hello Linux" "Hello World!" "GNU is Not Unix"; do
  echo $Line >> /tmp/test.txt
done
 
cat /tmp/test.txt
unset Line

 

—————————————执行结果—————————————

 

1
2
3
4
[root@localhost ~]# ./showHello.sh
Hello Linux
Hello World!
GNU is Not Unix

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Shell语言十五 for循环实例演示(二)》技术文章,《Shell语言十五 for循环实例演示(二)》详细使用和说明,有时《Shell语言十五 for循环实例演示(二)》可能不完善、敬请谅解!如果《Shell语言十五 for循环实例演示(二)》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片