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

UNIXシェルプログラミングの勉強中です(超初心者)。メニュープログラムを組みたいのですが、最初でつまづいています。

新しいディレクトリを作成する。
・該当ディレクトリがすでに存在していないかどうか確認する。
・存在していたらユーザーに警告し、存在していなければ作成する。

・・・といったものなのですが、以下が私の乏しい知識からつくりあげたものになります(必要と思われる部分のみ抜粋)

echo -n "作成したいディレクトリ名を入力してください -->"
read newdir
mkdir $newdir
echo "$newdirを作成しました。"

こんな感じでいいのでしょうか?

掲載するのも申し訳ないくらいの低レベルな質問かもしれませんが、よろしくお願いします。

A 回答 (4件)

一般ファイルでもエラーになると思いますので


-------------------------------------------
if [ -f $newdir ]; then
警告処理
exit 1
else
mkdir $newdir
echo "$newdirを作成しました。"
fi
exit 0
-------------------------------------------
な感じで
    • good
    • 0
この回答へのお礼

シンプルでわかりやすい回答をいただき、助かりました。exitは習っていないので、調べて使えるようにしたいと思います。

ありがとうございました!

お礼日時:2009/05/22 12:01

ちょこっとエラー制御いれてこんな感じで・・・



#!/bin/sh

echo -n "dirname ? ";
read dir
if [ -z $dir ] ; then
$0;
elif [ -f $dir -o -d $dir ] ; then
echo "ng";
else
mkdir $dir;
echo "ok";
fi
    • good
    • 0
この回答へのお礼

教えていただいたのを拝見して、それぞれの制御文のオプションが自分の課題だなーと思いました。コツコツ調べて自分のものにしていきたいと思います。

ありがとうございました!

お礼日時:2009/05/22 11:58

存在チェックだけならこんなかんじ。


警告も出すならelseすればいい。
ググればこれくらいはたくさん出てくるぞー
がんばれ!学生!

if [ ! -d 作るディレクトリ ]; then
mkdir 作るディレクトリ
fi
    • good
    • 0
この回答へのお礼

目が疲れるまでググったんですが、なかなか「これ!」と思えるような検索結果にたどり着けず・・・。要するにまだシェルプログラミングをしっかり理解できていないんですね(-_-;)。
コマンドそれぞれは使えるんですが、それがシェルの制御文の中に入るとパニック状態です。

教えていただいたものを元に、がんばります!ありがとうございました。

お礼日時:2009/05/22 11:28

>存在していたらユーザーに警告



あってもなくても強制的に実行という考えはないのでしょうか?
また、カレントの属性によっては書き込みができずにエラー
が出る可能性もありますが、エラーチェックはどこまで
厳密にしたいのでしょうか?
入力された文字の整合性をバリデートする必要はないのでしょうか?

この回答への補足

存在していたら「そのディレクトリはすでに存在します。新しく別のディレクトリを作成してください」というようなメッセージとともに、新ディレクトリ名の入力を促す方向でいきたいです。

学校の課題なのですが、エラーチェックは必ずせよという以外には何の指示もないので、さほど厳密なものでなくていいようです。整合性についても同様です。

なにしろたった2回の授業でプログラミングせよというので、途方に暮れています。どうぞよろしくお願いします。

補足日時:2009/05/22 11:05
    • good
    • 0

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