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

标签 linux rpm specifications rpmbuild rpm-spec

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

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

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

相同的脚本独立运行时完​​美无缺。平台为CentOS7。

最佳答案

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

%S = %SOURCE

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

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

关于linux - date 命令在使用内部 rpm 规范文件时给出错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40396945/

相关文章:

python - 如何将 Python 打包为 RPM 以安装到/opt?

licensing - 选择开放标准/规范的许可声明

linux - MPSTAT 仅在应用程序执行期间显示 cpu 使用率平均值

linux - 如何用介子设置调试和优化标志

java - linux spring 工具套件(eclipse)从终端启动而不是从桌面启动

linux - 警告 libstdc++-devel-4.4.4-13.el6.x86_64.rpm

linux - 如何从已安装的 RPM 中获取许可证列表?

html - 为什么在将 0 作为唯一参数传递给 calc() 函数时必须指定单位标识符(例如 'px' )?

specifications - 在哪里可以找到 Miracast 规范?

linux - 字符串中带有空格的环境变量 - 如何从/proc/pid/environ 中使用它们