电脑技术学习

Unix中利用列表作为循环

dn001

  2、 利用系统变量作为循环列表。

  在Unix操作系统中,for循环最大的特色,莫过于可以利用系统变量来作为循环列表。如还是以查询操作为例,用户可能需要从指定的几个文件夹中查找某个文件。而这几个目录都是有环境变量所确定的。如一个系统工程师刚到企业,接替老的系统工程师的工作。此时这位系统工程师就需要知道Unix服务器系统的一些基本配置。而这其中有一项重要的内容就是一些重要环境变量的设置。如安装了Oracle数据库,就需要知道其安装路径。若安装了Mail服务器,则需要知道其邮件的存储位置与备份位置等等。如果一一去查看这些环境变量,工作量会比较大。如果换成是笔者的话,不会做这么没有效率的事情。笔者的做法是,编写一个for循环,然后将这些重要的环境变量输出到一个文件中进行备份。这将为笔者后续的工作带来很大的方便。如现在笔者想知道Oracle的安装目录与mail的环境变量,就可以利用下面这个循环列表来实现。

  For varhome in $ORACLE_HOME $MAIL。

  在这个for循环中,笔者采用了系统的环境变量作为其循环语句。当系统工程师利用系统环境变量来作为循环列表时,需要注意以下几个事项。首先,这个列表项必须全部大写。也就是说,系统变量必须大写这个规则也适用于这个for循环。其次,再变量名之前必须加入$这个环境变量的符号,否则的话,编译器会无法识别。三是在多个环境变量之间,不需要加入分隔符。

  3、 利用通配符作为循环列表。

  有时候可能系统管理员有这个要求。在某个文件下有多以txt为扩展名的文件。现在系统工程师可能想一一统计这些文件的大小、创建日期、更新日期等等信息,然后将这些统计信息保存到一个文件中。或者想对这些文件进行改名,如在原先的名字之前加上一个backup的字符串,表示这些文件是备份文件。此时,如果一一对这些文件操作的话,会比较麻烦。那么比较合理的做法就是通过for循环来一次性完成这些任务。

  此时,如何书写这个循环列表呢?笔者认为比较合理、比较简便的方法就是通过通配符来实现。如可以利用如下语句来实现:for filename in *.txt。利用这个循环列表,系统就会从目录中查找所有以.txt为扩展名的文件,然后将其为参数,进行后续的操作。如用户需要进行文件更名的话,则可以使用sed操作来对文件进行重命名。在使用通配符作为循环列表中的参数时,最好采用合适的通配符。因为通配符*或者%其含义不尽相同。如果系统工程师能够了解他们其中的差异,并在这里对症下药,选择合适的通配符。那么就可以起到事半功倍的效果。

  在for循环中除了使用上面三种特殊的循环列表外,系统工程师往往还可能采用位置参数作为循环列表。如可以将命令行中的参数赋值给位置参数,来实现一些比较复杂的功能。由于篇幅限制,笔者在这里不对这个位置参数做详细的解释了。如有有需要的话,笔者在以后的文章中会谈到这个问题。

标签: