やたらとIFS変数変えるとマズい件
タブ区切りでスペース含むカラムがあるファイルを処理したくて、
IFS=$'\t' while read ・・・ do ・・・ done < filename
とかやってたら、
cmd="command --opt" $cmd ${params}
とかした時に、cmd内のスペースも丸ごと一つの文字列と扱われてしまい、「"command --opt"なんてコマンドはねー」と怒られてしまった。
こういう場合はこうすればよい。
while IFS=$'\t' read ・・・ do ・・・ done < filename
read はコマンドなので、env コマンドを使って read を実行する際に一時的に環境変数を変えることができる。(bash では "env" を省略できる。)