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」の2文字を含む文字列です。たとえばbash
、試してみたいと思うかもしれません$'\n'
。