シェルスクリプトマガジン

第3回 写真を整理する

 18行目は、ファイル名を入力するときに表示するメッセージです。「画像の新しいファイル名を入力してください(拡張子「.jpg」不要)。」と出力するようにしています。19行目の「read」コマンドでファイル名を入力させます。入力したファイル名は、変数「photo_new_name」に格納されます。

 ファイルが存在していることは重複していることを表しています。つまり、終了ステータスによって、重複しているかどうかを判定できるわけです。なお、ここで必要なのは終了ステータスだけなので、「1>/dev/null」で標準出力を、「2>/dev/null」で標準エラー出力を表示させないようにしています。

 21行目では、「if」文を使って終了ステータスで重複かどうかを判定しています。if文については、第1回を参照してください。直前に実行したコマンドの終了ステータスは「$?」という特殊な変数で取得できます。「$? = “0”」の条件式が成り立ったときは、重複する名前があるため、22行目で「同じ名前のファイルがあります。」を表示し、While文の先頭に戻ります。条件式に一致しない場合は、重複するファイル名がないので、name_check変数を「0」にしてWhile文のループから抜けます。