IFSで区切り文字を変更
ヒアドキュメント内でコマンドを羅列して実行したい。
CMD=`cat <<EOF ls ls -a ls -l EOF`
これを例えばforループ内で取り出して確認してみると
for cmd in ${CMD} do echo ${cmd} done 実行結果 ls ls -a ls -l
bashの区切り文字は、デフォルトで「タブ•スペース•改行」なので、これを「改行」のみにしてあげる。
IFS=$'\n' for cmd in ${CMD} do echo ${cmd} done 実行結果 ls ls -a ls -l
ただ、このままだと実行時に引数が認識されないため、元に戻す。
IFS=$'\n' for cmd in ${CMD} do IFS=$' \t\n' ${cmd} done
なんかいい方法ありそうだけど。。。