2016-11-03 21 views
0

我必须在安装我的软件包之前执行一些必要的步骤,例如恢复以前的数据存储区快照。 为此,我使用%pre脚本,如下所示。date命令在使用内部rpm spec文件时给出了错误的输出

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

输出如下:20161103123325OURCE 它与日期沿着打印一些随机字符。 “OURCE”不存在于我的规格文件中的任何地方。

相同的脚本完全可以独立使用。该平台是CentOS7。

回答

2

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

%S = %SOURCE 

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

stamp=$(date '+%Y%m%d%H%M%''S') 
  • 注意,我换成了建议报告$()调用
  • 我刚插入两个“反引号”分裂字符串分两部分;这避免了宏的替换。