アプリ版:「スタンプのみでお礼する」機能のリリースについて

シェルスクリプトでutfとshift-jisの変換を行いたいと思ってます。
ファイル出力のところでファイル名を$1と引数にするとうまくいきません。(変換されてなかったり、空ファイルできたり)

>! $1 ではなく $1.xx とかにするとうまくいきます。
どうしたら引数のファイル名に出力できるでしょうか?

#!/bin/sh
if [ $2 = 'us' ]
then
cp $1 $1.utf8
iconv -f UTF-8 -t SHIFT-JIS $1 >! $1
echo "$1 UTF-8 => SHIFT-JIS [ OK ]"
elif [ $2 = 'su' ]
then
cp -f $1 $1.sjis
iconv -f SHIFT-JIS -t UTF-8 $1 >! $1
echo "$1 SHIFT-JIS => UTF-8 [ OK ]"
else
echo "$1をコンバートできませんでした。"
fi

A 回答 (2件)

前の cp で「別名でコピー」してるんだから, コピーしたあとのファイルを iconv で変換すればいいのに.


iconv -f UTF-8 -t SHIFT-JIS $1.utf8 >! $1
みたいな感じね.
    • good
    • 0

iconv -f UTF-8 -t SHIFT-JIS $1 >! $1


なんてやったらうまくいかないのは当然だわな. iconv が読み取る前にリダイレクトで潰してるんだもの.
ところで, その前で cp してるのはなぜ?

この回答への補足

なるほど、では一回別名にしてそれをコピーさせてってかんじですかね。
cpは今の自分の環境の都合上両方の文字コードデータを残す必要があるのでやってます。

補足日時:2008/03/10 15:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!