如何读取文件内容到一个变量一气呵成?(How to read the file content in

2019-07-29 20:39发布

在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"

Answer 1:

处理所述环内,而不是后的行。 如果你真的需要在一个变量的文件:

var=$(<file)


Answer 2:

另一种方法是用好的映射文件内置:

mapfile < test.file
echo "${MAPFILE[@]}"


Answer 3:

作为另一个选项,你可以建立线的阵列。 如果你使用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


文章来源: How to read the file content into a variable in one go?
标签: bash shell