在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"
?
处理所述环内,而不是后的行。 如果你真的需要在一个变量的文件:
var=$(<file)
另一种方法是用好的映射文件内置:
mapfile < test.file
echo "${MAPFILE[@]}"
作为另一个选项,你可以建立线的阵列。 如果你使用bash 4+,您可以使用mapfile
内置:
mapfile -t lines <test.file
如果您想将行作为输出,以及存储你可以做这样的事情:
mapfile -t lines < <(tee /dev/tty <test.file)
然后"${lines[0]}"
将是该文件的第一行, "${lines[1]}"
第二,等等。 ${#lines[@]}
将行数; "${lines[@]}"
将是整个阵列,而"${lines[*]}"
将是线一起用空格连接成一个大的字符串。
对于旧版本的bash,您可以手动建立数组:
lines=()
while IFS= read -r line
do
printf '%s\n' "$line"
lines+=("$line")
done < test.file