Unix中利用列表作为循环

【Unix中利用列表作为循环】在Unix操作系统中开发应用程序,循环语句可以说占了半壁江山 。由于Unix操作系统中采用的是shell编程环境,为此循环机制在结构上不同于其他的高级语言,如循环语句之一的for循环,就存在很大的差异 。笔者就跟大家介绍一下,在Unix操作系统中如何使用for循环以及相关的注意事项,帮助大家提高对这个for循环的利用程度 。
一、for循环的基本结构 。
在shell环境中,for循环主要有两部分组成,分别为循环列表于操作语句 。具体格式如下:
for variable in list (循环列表)
do
commands (操作语句)
done
从上面这个结构中可以看出,在for循环中使用变量和列表来定义循环列表 。另外,在利用do与done关键字将要执行的操作括起来 。其中变量的作用就是依次从循环列表中取值,并将这个参数值传递给操作语句,进行相关的操作 。其实,在学习这个for循环中,操作语句部分并没有多少的难度,或者说没有新鲜的内容 。因为这里就是一些unix操作系统的基本语句所构成的 。而其难点就是在于循环列表的确定 。因为这个循环列表关系到for循环运行的两个关键参数,一是循环的次数,二是循环内部操作所需要用到的参数值 。为此笔者在介绍这个for循环时,重点也是放在这个循环列表的设置上 。也就是说,系统工程师只要精通这个循环列表的编写,那么其他内容不会有问题 。
二、如何编制循环列表?
由于shell是一个跟Unix操作系统友好集成的编程环境,或者说是操作系统中的一个部分 。为此这个循环列表的定义方式要比高级语言的for循环丰富的多 。如可以使用很多操作系统的文件或者参数来作为其循环条件 。具体来说,系统工程师可以按照如下的规则来设置这个循环列表 。
1、 利用文件来作为循环列表 。
有时候可能列表比较大,如总共有100多个条目 。虽然可以依次将这些条目写在for语句的循环列表中,但是会大大的增加代码的长度,从而影响其阅读 。而且以后若要更改这些条目的话,还需要去更改这个源代码 。显然这会很麻烦 。如现在系统工程师需要查找在用户目录下,是否有用户想要的20个文件 。这20个文件名字没有什么规律 。正常情况下,用户需要一一输入文件名 。文件名输入一个,然后查询一次 。一共做二十次,显然这操作起来的工作量会非常的大 。如果这个文件的数目再增加的话,那么操作起来就会更加的麻烦 。在for循环中可以解决这个问题 。即只需要在循环列表中将这20个文件名字输入进去,然后再操作语句中通过查询操作在指定目录中查找看是否有相关的文件 。若有的话,将位置等信息保存到一个文件中 。这就可以简化用户的操作,只需要进行一个for循环即可 。同时还可以大幅度的缩短查询的时间 。
但是,此时遇到的一个问题就是要在for循环的循环列表中输入20个文件名字 。为此系统工程师希望能够将这些文件的名字保存在文件中,然后让for循环从文件中读取这些内容 。这即方便,而且也利于后续的调整 。其实在for循环中,是支持从文件中读取相关的列表信息 。不过这需要用到一个cat命令 。大家都知道,这个cat命令的用途主要是从一个文件中读取相关的信息 。如果用过管道符的系统工程师,一定知道,可以将某个命令的结果作为另外一个命令的参数 。其实,在这里用到的也是这个原理,只是不需要通过管道符来实现而已 。具体来说,这个循环列表可以如下定义 。For name in ‘cat filename.txt’(注意,由于其读取后变为了文本的内容,为此需要加上单引号) 。当for循环的列表很大,而且没有规律可循的话,虽然可以直接在循环列表中一一列出列表项,但这不是笔者所推荐的方法 。笔者认为,遇到这种情况时,最好能够向上面笔者建议的,将列表项保存在一个文件中 。然后在for循环的循环列表中利用cat命令进行读取 。由于此时这个文件跟程序是相对独立的,为此以后若需要调整这个列表项的值,不需要修改源代码即可以实现 。为此者也被认为是一种灵活性比较高的处理方式 。如果列表项需要经常调整,那么即使列表项的内容不是很多,也可以通过这种方法来提高其灵活性 。

推荐阅读