【发布时间】:2012-06-11 16:58:18
【问题描述】:
在Java中,如果你确定一个文件很小,你可以使用readBytes()方法一次性读取内容,而不是逐行读取或使用缓冲区。
只是想知道 shell 脚本,我知道我们可以这样做:
while read line
do
echo $line
LINE = $line
done < "test.file"
echo $LINE
如果我的 test.file 是这样的:
testline1
testline2
testline3
这只给了我$LINE 的最后一行。 $LINE 包含“testline3”。
我的问题是:如何将包含多行的整个文件读入一个变量,这样我才能得到$LINE="testline1\ntestline2\ntestline3"?
【问题讨论】:
-
DATA=$(cat file),但您为什么要这样做?只需在需要内容时阅读文件! -
与您的问题没有直接关系的两件事:首先,
LINE = $line实际上不起作用;等号周围的空间使其无效。其次,如果您正在操作要按字面意思保留的文本,则应将IFS设置为 null 以进行读取调用(否则每行上的前导空格将被删除)并将-r选项传递给read和-E选项到echo(否则,文件中的任何反斜杠都会搞砸)。例如,请参阅下面的答案。 -
@MarkReed:我从来不明白
-E的用途,因为这是echo的Bash 默认行为。