admin 发表于 2017-12-17 22:24:25

1.4 命令替换及典型应用

   shell脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。这个特性在处理脚本数据时尤为方便。

   有两种方法可以将命令输出赋给变量:
-反引号字符(`)

-   $()格式
    命令替换允许你将shell命令的输出赋给变量。

1 基本举例1.1 将命令的输出赋值给一个变量
代码:testing=$(date)
echo "The date and time are: " $testing
输出:The date and time are:Sun Dec 17 22:25:15 CST 2017可以看到,本例中,将date命令的输出赋予了testing这个变量,然后通过echo打印出来,呈现给用户。

1.2 将命令的输出赋值给一个变量
通过命令替换获得当前日期并用它来生成唯一文件名
代码:today=$(date +%y%m%d)
ls /usr/bin -al > log.$today输出没有显示。但是我们用ls -l查看下当前目录,发现系统自动创建了一个新的文件log.171217。如下:# ls -l
total 48
-rw-r--r-- 1 root root 38177 Dec 17 22:40 log.171217
-rwxr--r-- 1 root root   103 Dec 17 22:38 test我们的目的达到了。回顾一下:
1)+%y%m%d格式告诉date命令将日期显示为两位数的年月日的组合。
执行命令:$ date +%y%m%d
输出为171217。
2)ls /usr/bin -al >右侧的>是一个重定向,把ls的输出结果存放到log.$today文件中,而$today已经在第一行脚本中得到了取值为171217。
总结:
目录中出现的日志文件采用$today变量的值作为文件名的一部分。日志文件的内容是/usr/bin目录内容的列表输出。
如果脚本在明天运行,日志文件名会是log.140201,就这样为新的一天创建一个新文件。 (鼓掌!!!)





页: [1]
查看完整版本: 1.4 命令替换及典型应用