IFS='\n'
for i in "$(IFS='\n' printf 'abc\nxyz\n123 456\n')"; do
echo "????"
echo "$i"
done
echo "output"
echo "${args[@]}"
以下输出:
????
abc
xyz
123 456
output
如何让 for 循环迭代每一行?为什么该IFS='\n'
命令不让它以这种方式运行?
答案1
双引号使“命令替换”成为一个参数。尝试不使用:
$ for i in $( printf 'abc\nxyz\n123 456\n'); do echo "????"; echo "$i"; done
????
abc
????
xyz
????
123 456
另外,您的IFS
设置为包含两个字符“\”和“n”的字符串。例如bash
,您可能想尝试一下$'\n'
。