如利用set ‘date’命令,就可以利用把它的参数结果转化为位置参数。如此设置之后,在显示的结果中系统就会把第一个字段赋值给位置参数$1,第二个字段赋值给位置参数$2,依次类推。在这里笔者再强调一次,第一个位置参数为$1,而不是$0。因为笔者以前犯这个错误犯怕了,所以在这里不厌其烦的强调这个内容,希望能够引起大家的重视。
第二步:利用echo命令来显示位置参数所代表的内容。
把位置参数与输出结果一一对应之后,系统工程师就可以利用echo命令或者在应用程序中直接引用位置参数从某个命令的输出结果中截取相关的内容。通常情况下,系统工程师可以一次抽取一个字段,也可以一次抽取多个字段。而且难能可贵的是,命令中还可以使用通配符。如果系统工程师需要显示所有位置参数所对应的内容,也就是原有命令显示的结果,则可以利用echo $*来实现。通配符*号就表示所有的位置参数。不过需要注意的是,在引用位置参数的时候,要把前面的$美元符号加上去。即echo $1 与echo 1会显示两个不同的结果。前者就是位置参数$1所代表的字段内容;而后者直接显示为1。因为1不是有效的位置参数,而只是把它当作一个简单的字符来处理。
三、set命令的高级应用。
上面举的例子其实只是set命令的一个教学例子。在实际工作中,这主要是用来让大家理解set命令来截取输出结果的基本原理。笔者现在要介绍的就是系统工程师在实际工作中经常要用到的内容,大家要睁开眼看仔细了。
1、从其他文件中或者不规则分隔符的结果中截取字段。如上面所示的输出结果中,各个字段时通过空格符号来分隔的。也即是说,set命令使用的参数分隔符默认情况下采用的是空格符号分隔符。如果显示的结果不是以空格符号分隔的,还是以分号或者横杆来区分的(系统工程师平时遇到最多的就是利用分号或者/符号来分隔的内容),那么就不能利用这个命令了吗?其实系统工程师可以根据实际情况来设置这个分隔符。也就是说,系统工程师可以利用这个set命令来操作位置参数,从而从任何输出结果中(分隔符不同)截取所需要的内容。
2、有利于备份的工作。其实在备份作业中,这个特性就非常有用。如笔者在Unix系统上简易部署了一个文件服务器。在这个服务器上,存储有企业所有员工的日常工作文件。为此其日常的安全就显得非常的重要。此时系统工程师可以采用日被分的方式,把备份文件保存为一个月。也就是说,在系统中创建1-31一共三十一个文件夹。然后把文件服务器中的备份文件按照日期一次保存到这三十一个文件夹中。也就是说1日的备份文件保存在文件夹名字为1的文件夹中,2日的备分文件备份到名字为2的文件夹中,依次类推。这个备份功能程序不难,系统工程师可以编写一个脚本程序来完成。困难的是,系统如何根据当前的日期把备份文件保存到特定的文件夹中。此时就需要用刀这个set命令。系统工程师可以利用set命令来抽取系统日期中的第三个位置参数。然后根据这个参数创建文件夹(创建文件夹时,如果文件夹已经存在,则系统会自动覆盖这个文件夹)。就是这么简单,就可以完成按日来保存备份文件了。可见,利用set命令截取某个输出结果中的内容这是一个基础性的功能。他跟其他命令或者程序结合则可以发挥意想不到的效果。为此笔者建议各位系统工程师,要牢记如何通过set命令来从输出结果中截取必要的参数。或许在什么时候就用的着了。另外需要注意的就是,set命令可以通过各种分隔符来截取相关的字段,而不仅仅只是支持一个空格分隔符,如可以从一个分号分隔的参数文件中获取相关的参数等等。
标签: