2011-09-25 139 views
6

作爲系統構建腳本的一部分,我有一個腳本可以創建各種文件和配置。BASH腳本將變量傳遞給新腳本而不用替換

但是構建腳本的一部分會創建一個新腳本,其中包含我不想在生成腳本運行時解析的變量。代碼片斷例如

cat - > /etc/profile.d/mymotd.sh <<EOF 
hostname=`uname -n` 
echo -e "Hostname is $hostname" 
EOF 

我已經嘗試了各種組合的「與」和(和[但我不能拿到劇本發送內容無取代的價值,並把替代品的新的腳本,而不是原文。

想法?

回答

9

最簡單的就是逃避$

回聲-e 「主機名是\ $主機名」

23

最簡單的方法是,假設您不希望在此處的文檔中替換任何內容,請將EOF標記放在引號中,如下所示:

cat - > /etc/profile.d/mymotd.sh <<'EOF' 
hostname=`uname -n` 
echo -e "Hostname is $hostname" 
EOF 
+0

Perfecto。這工作。謝謝。 – interoperate

+1

應該接受答案,謝謝 – David

相關問題