【问题标题】:date command is giving erroneous output while using inside rpm spec filedate 命令在使用内部 rpm 规范文件时给出错误的输出
【发布时间】:2017-03-16 18:27:07
【问题描述】:

在安装我的软件包之前,我必须执行一些必要的步骤,例如备份以前的数据存储快照。 为此,我使用了一个 %pre 脚本,如下所示。

%pre
#!/bin/sh
--------
--------
stamp=`date +%Y%m%d%H%M%S`
echo ${stamp}
-------------
-------------

输出如下:20161103123325OURCE 它正在打印一些随机字符以及日期。 “OURCE”不在我的规范文件中的任何位置。

同样的脚本可以独立运行。平台是CentOS7。

【问题讨论】:

    标签: linux rpm specifications rpmbuild rpm-spec


    【解决方案1】:

    rpmbuild 知道一整套宏。显然某个宏定义为:

    %S = %SOURCE
    

    我没有找到告诉 rpmbuild 不要扩展该宏的内容;但是有一种方法可以欺骗他不要这样做。我知道这是一个小小的解决方法,但这是我能想到的最好的方法:

    stamp=$(date '+%Y%m%d%H%M%''S')
    
    • 请注意,我用推荐的 $() 调用替换了反引号
    • 我刚刚插入了两个 '' 将字符串分成两部分;这样可以避免宏替换。

    【讨论】:

      【解决方案2】:

      如果您在日期命令中使用第二个百分号“%%”转义百分号“%”,如以下链接所述,那应该可以纠正您在将 %S 扩展为“OURCE”时看到的行为'在你的输出中看到。

          stamp=`date +%%Y%%m%%d%%H%%M%%S`
      

      请参阅此处的“编写宏”部分 http://rpm.org/user_doc/macros.html

      【讨论】:

        猜你喜欢
        • 2011-07-19
        • 2012-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多