我的剧本
export IFS=":" cat hello | while read a b c d; do echo $a,$b,$c,$d done
我的档案 hello
hello
1:1:1:1 2:2:2:2 3:3:3:3
我的输出
1,1,1,1 2,2,2,2
如果我3:3:3:3在hello之后放一个空白行,则输出变为
3:3:3:3
1,1,1,1 2,2,2,2 3,3,3,3
任何人都知道如何解决此问题,所以不需要在末尾添加空白行hello?
发生的情况是,read当 输入未以换行符终止 时,命令将失败。由于文件末尾缺少换行符read,因此失败,因此将while跳过循环的最后一次迭代。
read
while
如果您不想/不能确保输入文件的末尾有换行符,可以将您的文件cat与进行分组,echo以使输入的 外观 以换行符终止,例如:
cat
echo
{ cat hello; echo; } | while read a b c d; do echo $a,$b,$c,$d done
或像这样:
(cat hello; echo) | while read a b c d; do echo $a,$b,$c,$d done