csvファイルを読み込んでいるのですが、
csvの文字コードがUTF-8,LFであれば、
問題ないのですが、
csvの文字コードがShift-JISのCRLFですと、
FIELD5を読んだ時改行コードを取得してしまい、
[ "$FIELD5" != "" ] が、trueになってしまいます。
こういった場合の対処方法を教えて下さい。
for STR in `cat $BUF`
do
FIELD1=`echo -n $STR | cut -f 1 -d','`
FIELD2=`echo -n $STR | cut -f 2 -d','`
FIELD3=`echo -n $STR | cut -f 3 -d','`
〜処理略〜
done
` cat $BUF ` の部分を ` cat $BUF | tr -d '\r' ` とでもすればよいです。
なおシェルスクリプト自体を SHIFT_JIS のlocaleで動かしているのでないなら、文字コードも変換した方が安全です・・・というより、さもなくば特定の文字が来たときに確実にコケます。たとえば UTF-8 のlocaleで動かすなら同様に以下のような感じで。
` iconv -f SHIFT_JIS -t UTF-8 -- $BUF | tr -d '\r' `
最終的に SHIFT_JIS で結果が欲しいなら出力時に逆向きに変換しなおします。
localeについては http://q.hatena.ne.jp/1363594648#a1194456 あたりもご参照ください。
(おおっと誤植修正:-)