2013-07-18 118 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