read
我正在尝试使用bash 3.2读取文件,但read
似乎将多个空格的任何实例转换为单个空格。
例如,下面的代码在“hello”和“there”之间有两个制表符,在“today”和“world”之间有三个空格:
while read -r LINE; do
echo $LINE
done <<< "hello there
today world"
但是,运行时,它输出的每组单词之间仅包含一个空格:
hello there
today world
相反,我希望它输出保留空格的行,例如:
hello there
today world
有什么办法可以做到这一点吗?如果没有阅读,那么还有其他的吗?
答案1
打印变量时在变量周围加上引号。它被扩展然后分词,因此echo
获取hello
和there
作为单独的参数。
echo "$LINE"
或更好
printf '%s\n' "$LINE"
会保留你的空白
所以这不是read
改变你的空白,而是你稍后没有引用该变量