使用内部 rpm 规范文件时,date 命令给出错误的输出

nit*_*inj 1 linux specifications rpm rpmbuild rpm-spec

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

%pre
#!/bin/sh
--------
--------
stamp=`date +%Y%m%d%H%M%S`
echo ${stamp}
-------------
-------------
Run Code Online (Sandbox Code Playgroud)

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

相同的脚本可以完美地独立运行。平台是CentOS7。

Chr*_*aes 6

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

%S = %SOURCE
Run Code Online (Sandbox Code Playgroud)

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

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