2013-01-07 63 views
4

我是shell scripting的新手。我需要读取一个文件,该文件可以在所有定义了变量的shell中运行。喜欢的东西:Shell脚本按行读取文件

variable1=test1 
variable2=test2 
    .... 

我必须逐行读取该文件中的行,并准备用空格隔开,像新的字符串:

variable=variable1=test1 variable2=test2 .... 

我用下面的代码尝试:

while read LINE 
do 
$VAR="$VAR $LINE" 
done < test.dat 

但它扔我这个错误:

command not found Test.sh: line 3: = variable1=test1 

回答

5

用你的脚本的问题是var前面有$被初始化,请尝试:

#/bin/bash 

while read line; do 
    var="$var $line" 
done < file 

echo "$var" 

但是你可以通过替换用空格换行符与tr命令做到这一点。

$ tr '\n' ' ' < file 
variable1=test1 variable2=test2 

$ var="$(tr '\n' ' ' < file)" 

$ echo "$var" 
variable1=test1 variable2=test2 
4

定义shell变量时,您必须省略$。所以VAR="bla"是对的,$VAR="bla"是错的。 $仅用于使用变量,如echo $VAR;

while read LINE 
do 
    VAR="$VAR $LINE" 
done < test.dat