UNIXシェルプログラミングの勉強中です(超初心者)。メニュープログラムを組みたいのですが、最初でつまづいています。
新しいディレクトリを作成する。
・該当ディレクトリがすでに存在していないかどうか確認する。
・存在していたらユーザーに警告し、存在していなければ作成する。
・・・といったものなのですが、以下が私の乏しい知識からつくりあげたものになります(必要と思われる部分のみ抜粋)
echo -n "作成したいディレクトリ名を入力してください -->"
read newdir
mkdir $newdir
echo "$newdirを作成しました。"
こんな感じでいいのでしょうか?
掲載するのも申し訳ないくらいの低レベルな質問かもしれませんが、よろしくお願いします。
No.4
- 回答日時:
一般ファイルでもエラーになると思いますので
-------------------------------------------
if [ -f $newdir ]; then
警告処理
exit 1
else
mkdir $newdir
echo "$newdirを作成しました。"
fi
exit 0
-------------------------------------------
な感じで
シンプルでわかりやすい回答をいただき、助かりました。exitは習っていないので、調べて使えるようにしたいと思います。
ありがとうございました!
No.3ベストアンサー
- 回答日時:
ちょこっとエラー制御いれてこんな感じで・・・
#!/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
教えていただいたのを拝見して、それぞれの制御文のオプションが自分の課題だなーと思いました。コツコツ調べて自分のものにしていきたいと思います。
ありがとうございました!
No.2
- 回答日時:
存在チェックだけならこんなかんじ。
警告も出すならelseすればいい。
ググればこれくらいはたくさん出てくるぞー
がんばれ!学生!
if [ ! -d 作るディレクトリ ]; then
mkdir 作るディレクトリ
fi
目が疲れるまでググったんですが、なかなか「これ!」と思えるような検索結果にたどり着けず・・・。要するにまだシェルプログラミングをしっかり理解できていないんですね(-_-;)。
コマンドそれぞれは使えるんですが、それがシェルの制御文の中に入るとパニック状態です。
教えていただいたものを元に、がんばります!ありがとうございました。
No.1
- 回答日時:
>存在していたらユーザーに警告
あってもなくても強制的に実行という考えはないのでしょうか?
また、カレントの属性によっては書き込みができずにエラー
が出る可能性もありますが、エラーチェックはどこまで
厳密にしたいのでしょうか?
入力された文字の整合性をバリデートする必要はないのでしょうか?
この回答への補足
存在していたら「そのディレクトリはすでに存在します。新しく別のディレクトリを作成してください」というようなメッセージとともに、新ディレクトリ名の入力を促す方向でいきたいです。
学校の課題なのですが、エラーチェックは必ずせよという以外には何の指示もないので、さほど厳密なものでなくていいようです。整合性についても同様です。
なにしろたった2回の授業でプログラミングせよというので、途方に暮れています。どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AWSでSSH接続をしたいのですが...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ssl_error_logのエラー内容(AH...
-
ssl_request_logの必要性について
-
Ubuntu20.04からUbuntu22.04に...
-
Ubuntuで数字だけのユーザーア...
-
lubuntuでフォントをインストー...
-
ubuntuのシャットダウンが進ま...
-
shellscript内のコマンドを、su...
-
Linux Mint 日本語入力できなく...
-
Windowsのローカルディレクトリ...
-
Ubuntu on Xorgのログインについて
-
ubuntuで デイスク/deb/loopと...
-
ubuntuサーバーを久々に再起動...
-
ログにserver reached MaxReque...
-
VirtualBox ゲストOSにPC内蔵HD...
-
次のif文について意味を教えて...
-
AWSのEC2のZabbixユーザーでaws...
-
redmineにメールを飛ばす方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
AWSでSSH接続をしたいのですが...
-
Linuxのパーティション番号の変...
-
ubuntuで デイスク/deb/loopと...
-
自作のウェブサイトを友人に見...
-
ubuntuのシャットダウンが進ま...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
Ubuntu系とCentOS系の違いはな...
-
Ubuntu on Xorgのログインについて
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Ubuntuで数字だけのユーザーア...
-
linuxサーバーのキャッシュをク...
-
shellscript内のコマンドを、su...
-
ssl_request_logの必要性について
-
ubuntuのサーバー(virtual box)...
-
Kali Linuxで起動できない - Mi...
-
ホストオンリーアダプタで接続...
おすすめ情報