簡體   English   中英

使用內部rpm規范文件時,date命令給出錯誤的輸出

[英]date command is giving erroneous output while using inside rpm spec file

安裝軟件包之前,我必須執行一些必要的步驟,例如備份以前的數據存儲快照。 為此,我使用%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')
  • 請注意,我用推薦的$()調用替換了反引號
  • 我只插入了兩個''將字符串分成兩部分; 這樣可以避免宏替換。

如果您在日期命令中使用第二個百分號“ %%”對百分號“%”進行了轉義(如以下鏈接所述),則可以通過將%S擴展為“ OURCE”來更正您所看到的行為在您的輸出中。

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

請參閱http://rpm.org/user_doc/macros.html中的 “編寫宏”部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM