51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2487|回复: 0
打印 上一主题 下一主题

1.4 命令替换及典型应用

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-12-17 22:24:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       shell脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。这个特性在处理脚本数据时尤为方便。  

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

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

    1.2 将命令的输出赋值给一个变量
    通过命令替换获得当前日期并用它来生成唯一文件名
    代码:
    1. today=$(date +%y%m%d)
    2. ls /usr/bin -al > log.$today
    复制代码
    输出没有显示。但是我们用ls -l查看下当前目录,发现系统自动创建了一个新的文件log.171217。如下:
    1. [root@python3 shellprogram]# ls -l
    2. total 48
    3. -rw-r--r-- 1 root root 38177 Dec 17 22:40 log.171217
    4. -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,就这样为新的一天创建一个新文件。 (鼓掌!!!)





    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 09:58 , Processed in 0.061954 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表