2017-10-17 69 views
1

假設兩個文件:file1file2file1是一個簡短的Bash腳本,即引用file2以獲取文本字符串。文本字符串包含一個變量名稱($VAR1),但變量本身在file1中分配了一個值。引用單獨文件中的bash變量名稱

$ cat file1 
#!/bin/bash 
VAR1="World" 
CMDS=$(cat file2) 
echo "$CMDS" 

$ cat file2 
Hello $VAR1 ! 

在上述設置下,在執行file1時,變量名稱無法正確識別。

$ bash file1 
Hello $VAR1 ! 

什麼我需要做的,這樣的變量名的file1執行過程中正確識別?

+2

爲什麼要這樣做? – 123

+0

@ 123顯然,他想用'bash'作爲模板系統。 – chepner

+0

@chepner非常奇怪的方法來模板化。 – 123

回答

0

由於您不執行file2,只是捕獲它的內容,file2中的變量僅用作佔位符。您可以將輸出從cat輸出到sed,如下所示:

CMDS=$(cat file2|sed -e "s/\$VAR1/$VAR1/") 
+0

'sed'知道如何讀取'file2'。 ['貓'沒用](http://www.iki.fi/era/unix/award.html)。 – tripleee