2014-09-30 104 views
1

我正在使用make和我有一個make文件幫助我使用rpm-builder構建一個rpm。您必須使用以下佈局製作rpm.properties文件。如何在沒有使用makefile進行擴展的情況下回顯變量

rpm_name=my_app 
    rpm_version=1.0 
    rpm_release=$(date +%s) 
    rpm_summary=${rpm_name} 
    rpm_install_dir=/projects/my_app/webapps 
    files=src/my_application.properties,log4j.xml 

這是我使用這樣做

rpm: 
    @echo rpm_name=foo > rpm.properties 
    @echo rpm_version=1.0 >> rpm.properties 
    @echo rpm_release=$(date +%s) >> rpm.properties 
    @echo rpm_summary=foo >> rpm.properties 
    @echo rpm_install_dir=~/foo_install >> rpm.properties 
    @echo file=foo.class >> rpm.properties 
    @echo rpm_install_post_script_file=foo.sh >> rpm.properties 
    @echo rpm_username=root >> rpm.properties 
    @echo rpm_groupname=root >> rpm.properties 

make文件工作正常期待與線生成文件的一部分,

@echo rpm_release=$(date +%s) >> rpm.properties

不輸出到rpm.properties文件。該rpm.properties輸出如下

rpm_name=foo 
rpm_version=1.0 
rpm_release= 
rpm_summary=foo 
rpm_install_dir=~/foo_install 
file=foo.class 
rpm_install_post_script_file=foo.sh 
rpm_username=root 
rpm_groupname=root 

雖然我要找

rpm_name=foo 
rpm_version=1.0 
rpm_release=$(date +%s) 
rpm_summary=foo 
rpm_install_dir=~/foo_install 
file=foo.class 
rpm_install_post_script_file=foo.sh 
rpm_username=root 
rpm_groupname=root 

有誰知道我怎麼會由make文件解釋爲像$(date +%s)一個變量是文本的輸出線AA純文本不擴展?

回答

2

您需要從make中跳出$。然後您還需要從shell中跳出$

用途:

@echo rpm_release='$$(date +%s)' >> rpm.properties 

您也可以做到這一切與一個echo/printf和單一的重定向,而不是整數倍,如果你想。

+0

工作表示感謝,我知道我不得不逃離字符,但不太熟悉這樣做。 – jgr208 2014-09-30 14:55:29

相關問題