date命令在使用rpm规范文件时给出了错误的输出

时间:2016-11-03 08:37:27

标签: linux rpm specifications rpmbuild rpm-spec

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

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

输出如下:20161103123325OURCE 它会打印一些随机字符和日期。我的规范文件中的任何地方都没有“OURCE”。

相同的脚本与独立脚本完美配合。该平台是CentOS7。

2 个答案:

答案 0 :(得分:3)

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

stamp=$(date '+%Y%m%d%H%M%''S')

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

$()
  • 请注意,我使用推荐的{{1}}调用
  • 替换了反引号
  • 我刚插入两个''将字符串分成两部分;这可以避免宏观更换。

答案 1 :(得分:0)

如果如以下链接中所述,在date命令中使用第二个百分号“ %%”对百分号“%”进行转义,则当您将%S扩展为“ OURCE”时,应会纠正您所看到的行为在您的输出中看到。

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

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