2016-09-14 51 views
1

我需要读取文本文件的内容并将内容分配给变量以便在脚本中可用。我在同一主题上看到很多问题,但我的脚本不起作用。Unix将文件内容输出到变量

export CONTENT_FROM_FILE="/home/me/test.sql" 
echo $CONTENT_FROM_FILE 
VAR=$(while IFS= read line;do echo "$line";done < "$CONTENT_FROM_FILE") 
echo $VAR 

这给出错误“没有这样的文件或目录”。所以我做了以下,

VAR=$(while IFS= read line;do echo "$line";done < "/home/me/test.sql") 
echo $VAR 

在这种情况下,它能够读取文件,但echo $ VAR只打印文件的一部分。

+0

这真的很奇怪。即使没有'export'语句,'CONTENT_FROM_FILE'也可以工作,并且你的代码完全适用于我(也就是说,如果你打算在一行中读取整个文件)。你能给出一个失败的文件例子,以及你得到的输出吗? –

+0

@learninghuman:对提供的答案提供反馈,以帮助您进一步了解情况。或者,如果它有助于解决您的问题,请接受/提出答案,以便对其他人有帮助。 – Inian

回答

0

如果你在bash,你可以做command-substitution来达到同样的,避免使用cat或冗余while-loop

#!/bin/bash 
myFileContent="$(<myFile)" # Sets "myFileContent" to contents of "myFile". 

要看到这个动作,我填了一个示例文件下面的内容: -

$ cat file 
Hi This is a test file - First line 
Hi This is a test file - Second line 

Hi This is a test file - Third line 

正在运行一个脚本读取这个文件,并将其打印到stdout

$ cat script.sh 
#!/bin/bash 
myfileContent="$(<file)" 

echo "$myfileContent" 

在运行该脚本

$ ./script.sh 
Hi This is a test file - First line 
Hi This is a test file - Second line 

Hi This is a test file - Third line 
0

Simpliesy方式是

VAR =`猫myfile`