在子 shell 中为 for 循环设置 IFS

在子 shell 中为 for 循环设置 IFS
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'

相关内容