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

Shell语言十六 for循环元素列表的生成法则

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

for循环语句的元素列表可以由几种方式生成:

 

a)逐一列举所有元素,前文中的元素列表都是采用的这种形式;

 

b)采用通配符的方式。逐一列举所有元素的方式只适合于少量元素的列表,如果元素个数较多,此方法就不适用了。

如要遍历/var 目录下的所有文件,且判断文件类型,如果采用ls /var查看所有文件,然后逐一列举所有元素的方式,会比较麻烦,但是如果采用或通配符来生成列表,会使操作简单很多:

# nano show_files_type.sh

 

1
2
3
4
5
6
7
#! /bin/bash
for File in /var/*; do
#如果要显示/var下所有以c开头的文件类型,可以使用/var/c*
file $File
done
unset File

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost ~]# ./show_files_type.sh
/var/account: directory
/var/cache: directory
/var/crash: directory
/var/cvs: directory
/var/db: directory
/var/empty: directory
/var/games: directory
/var/gdm: sticky directory
/var/lib: directory
/var/local: directory
/var/lock: directory
/var/log: directory
/var/mail: symbolic link to `spool/mail'
/var/nis: directory
/var/opt: directory
/var/preserve: directory
/var/run: directory
/var/spool: directory
/var/tmp: sticky directory
/var/www: directory
/var/yp: directory

 

c)使用命令来生成列表。

除了通配符,使用命令来生成列表同样也能起到简化代码的效果。还是上述例子,“/var/*”列表可以用ls /var命令来生成,注意使用命令生成的列表需要使用反引号来进行引用:

1
2
3
4
5
6
#!/bin/bash
#
for File in `ls /var`;do
file /var/$File
done
unset File

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost ~]# ./show_files_type.sh
/var/account: directory
/var/cache: directory
/var/crash: directory
/var/cvs: directory
/var/db: directory
/var/empty: directory
/var/games: directory
/var/gdm: sticky directory
/var/lib: directory
/var/local: directory
/var/lock: directory
/var/log: directory
/var/mail: symbolic link to `spool/mail'
/var/nis: directory
/var/opt: directory
/var/preserve: directory
/var/run: directory
/var/spool: directory
/var/tmp: sticky directory
/var/www: directory
/var/yp: directory

 

d)生成数字序列,其方式有:

 

①{起使数据..结束数据}。 

例如要生成1到100个数字的元素列表,就可以写成:{1..100}

 

②使用seq命令。使用man seq可以查看seq的用法:

       

1
2
3
4
seq [OPTION]... LAST  #指定结束数据
       seq [OPTION]... FIRST LAST        #指定开始和结束数据
       seq [OPTION]... FIRST INCREMENT LAST
      #指定开始和结束数据,以及每次递增或递减的数值

 

如分别显示1-6,3-6以及3到16且每次间隔2

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost ~]# man seq
[root@localhost ~]# seq 6
1
2
3
4
5
6
[root@localhost ~]# seq 3 6
3
4
5
6
[root@localhost ~]# seq 3 2 16
3
5
7
9
11
13
15

故元素列表可以使用 `seq [起始数字] [步长] [结束数字]` 的形式来生成。

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

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