问题Reading file line by line (with space) in Unix Shell scripting - Issue中的答案通常与“C”本地化不同。
Bash让我惊讶,因为'read'内部功能修剪了白色字符。我没有找到完全的决心,只有两个部分。然后我在这里描述它。
例如,您有一些文本文件包含到包含结尾空格的行。为清晰起见,我写了引号:
'line 1 without ending spaces'
'line 2 with ending spaces '
当你这样称呼时:
cat somefile.txt|while read LINE; do echo xx"$LINE"xx; done
你会看到:
'line 1 without ending spaces'
'line 2 with ending spaces'
看看这个,第二行是空间修剪!
怎么预防这个?这是我的答案:
答案 0 :(得分:1)
使用空IFS
读取所有字符,包括前导和尾随空格:
while IFS= read -r line; do echo "[$line]"; done < file
<强>输出:强>
[line 1 without ending spaces]
[line 2 with ending spaces ]