linux命令行工具env可以转储当前环境.
由于我想使用一些特殊字符env -0(每个输出行以0字节而不是换行结束).
但是如何再次加载这个转储呢?
Bash版本:4.2.53
我认为将IFS设置为$'\n'可以帮助我将整个文件读入数组,如下所示:
IFS=$'\n' read -r -a array < file
Run Code Online (Sandbox Code Playgroud)
但是,以上命令仅将文件的第一行读入数组的第一元素,而没有其他内容。
即使这样,它也只读取数组的第一行:
string=$'one\ntwo\nthree'
IFS=$'\n' read -r -a array <<< "$string"
Run Code Online (Sandbox Code Playgroud)
我在该站点上碰到过其他文章,这些文章谈论使用mapfile -t或read循环将文件读入数组。
现在我的问题是:什么时候使用IFS=$'\n'?
我正在学习bash,我在互联网上找到了一个教程,说明这些是相同的:
while read -r line;
do
...
done < file
$ cat file | while IFS= read -r line;
do
...
done
Run Code Online (Sandbox Code Playgroud)
这两个循环中是否有任何微妙的差异,它们是否真的相同?