假设我有以下文件:
hello\nworld
也就是说,字符串\n
实际上存在于文件中:
$ cat input.txt
hello\nworld
我想要将此文件读取到shell中的变量中。但是,从文件中读取数据的所有常用方法(如here所述)都会使shell将\n
序列解释为换行符:
% test="$(<input.txt)"
% echo "$test"
hello
world
% test="$(cat input.txt)"
% echo "$test"
hello
world
这对我来说完全出乎意料,坦率地说,我很困惑,我无法在互联网上找到这个问题的答案;我预计有人已经绊倒了这个问题。
我也看到如果你在逐行读取文件时使用read -r
,它可以工作,但我不想逐行读取它,我想读取整个文件。具体来说,我希望test
变量在字面上包含字符串“hello \ nworld”。我该怎么做?
答案 0 :(得分:4)
您可以使用read -r -d '' <input.txt
在单个字符串中读取整个文件。
然而,在我的测试中,我没有得到这种行为。也许你的echo
做了那种解释。试试printf "%s" "$test"
,看看是否能解决问题。