Linux date命令在使用rpm spec文件内部时给出错误的输出
在安装软件包之前,我必须执行一些必要的步骤,例如备份以前的数据存储快照。 为此,我使用了%pre脚本,如下所示Linux date命令在使用rpm spec文件内部时给出错误的输出,linux,rpm,specifications,rpmbuild,rpm-spec,Linux,Rpm,Specifications,Rpmbuild,Rpm Spec,在安装软件包之前,我必须执行一些必要的步骤,例如备份以前的数据存储快照。 为此,我使用了%pre脚本,如下所示 %pre #!/bin/sh -------- -------- stamp=`date +%Y%m%d%H%M%S` echo ${stamp} ------------- ------------- 输出如下:20161103123325 它正在打印一些随机字符和日期。“Source”在我的规范文件中的任何位置都不存在 同一个脚本完全可以作为独立脚本使用。平台是CentOS7。r
%pre
#!/bin/sh
--------
--------
stamp=`date +%Y%m%d%H%M%S`
echo ${stamp}
-------------
-------------
输出如下:20161103123325
它正在打印一些随机字符和日期。“Source”在我的规范文件中的任何位置都不存在
同一个脚本完全可以作为独立脚本使用。平台是CentOS7。rpmbuild知道一整套宏。显然,某个宏被定义为:
%S = %SOURCE
我没有找到告诉rpmbuild不要扩展宏的东西;但是有一种方法可以欺骗他不要这样做。我知道这是一个小小的解决办法,但这是我能想到的最好办法:
stamp=$(date '+%Y%m%d%H%M%''S')
- 注意,我用推荐的
调用替换了反勾号$()
- 我刚刚插入了两个“”以将字符串分成两部分;这避免了宏替换
- rpmbuild知道一整套宏。显然,某个宏被定义为:
%S = %SOURCE
我没有找到告诉rpmbuild不要扩展宏的东西;但是有一种方法可以欺骗他不要这样做。我知道这是一个小小的解决办法,但这是我能想到的最好办法:
stamp=$(date '+%Y%m%d%H%M%''S')
- 注意,我用推荐的
调用替换了反勾号$()
- 我刚刚插入了两个“”以将字符串分成两部分;这避免了宏替换
stamp=`date +%%Y%%m%%d%%H%%M%%S`
请参阅此处的“编写宏”部分
如果在date命令中用第二个百分比符号“%”转义百分比“%”,如以下链接所述,这将纠正将%S扩展为输出中的“源”时出现的行为
stamp=`date +%%Y%%m%%d%%H%%M%%S`
请参阅此处的“编写宏”部分