2013-07-18 172 views
2

我正在嘗試編寫一個bash腳本,它將遍歷文件中的行並在同一時間解釋全局變量。遍歷文件中的行並展開全局變量

我在我的bashrc文件中定義了一個全局變量$SOURCE_CODE_DIR。讓說 $SOURCE_CODE_DIR == /路徑/到/源/

我的外部文件看起來是這樣的:

$SOURCE_CODE_DIR/some/dir/file.txt 
$SOURCE_CODE_DIR/some/dir/file.cpp 

和我的bash腳本到目前爲止是:

while IFS=$'\n' read line 
do 
    echo $line 
done < /path/to/external/file/above.txt 

變量$ SOURCE_CODE_DIR正在腳本的其他地方使用,因此可以正確訪問和定義;

這個腳本的輸出

$SOURCE_CODE_DIR/some/dir/file.txt 
$SOURCE_CODE_DIR/some/dir/file.cpp 

,而不是

/path/to/source/some/dir/file.txt 
/path/to/source/some/dir/file.cpp 

誰能幫我擴大$ SOURCE_CODE_DIR變量,這樣我可以用它?

+0

您需要用雙引號'回聲「$行」' – KeepCalmAndCarryOn

+0

@KeepCalmAndCarryOn號 –

+0

EVAL它是那麼 – KeepCalmAndCarryOn

回答

3

一種選擇是使用eval

while IFS=$'\n' read line 
do 
    eval echo $line 
done < /path/to/external/file/above.txt 
+0

我知道你的意見是正確的也是 - 但@Antarus比你更重要。但是,謝謝你,永遠不會。 – Martyn

+0

@Martyn哦,沒關係。 (順便說一句,只是觀察兩個答案的時間!) – devnull

+0

啊......你是對的 - 你是第一個 - 我誤解了時代。更正 - 首先總是贏得我的書 – Martyn