存在を確認してディレクトリを作成する
存在を確認してディレクトリを作成します。
‘mkdir’コマンドを実行する前に、現在の場所にディレクトリが存在することを確認する事ができます。mkdir コマンドの’ -d ‘オプションは、特定のディレクトリが存在するかどうかをテストするためのオプションです。‘directory_exist.sh’という名前のファイルを作成し、次のコードを追加してください。ディレクトリの存在を確認してディレクトリを作成します。
#!/bin/bash
echo "ディレクトリ名を入力して下さい。";
read ndir;
if [ -d "$ndir" ];then
echo "ディレクトリが存在します。";
else
`mkdir $ndir`;
echo "ディレクトリを作成しました。";
fi
bashコマンドでファイルを実行します。
$ bash directory_exist.sh
ディレクトリ名を入力して下さい。
suzuki
ディレクトリを作成しました。
$ ls
suzuki/
$ bash directory_exist.sh
ディレクトリ名を入力して下さい。
suzuki
ディレクトリが存在します。
$
- ヒント
- 実はディレクトリの存在チェックを行わなくても先のスクリプトは問題なく動作します。
- mkdir -p コマンドは以下のような挙動をします。
-
作成対象ディレクトリの親ディレクトリが存在しない場合 はすべての親ディレクトリを作成する
- 作成対象ディレクトリがすでに存在している場合 は何も行わず、エラーもはかない
#!/bin/bash
# 一旦ディレクトリを作成
mkdir -p /tmp/work
ls -l -d /tmp/work/
# 出力
# drwxr-xr-x 2 root root 64 Aug 22 08:26 /tmp/work/
# オプション無しですでに存在しているディレクトリを作成
mkdir /tmp/work
# 出力
# mkdir: /tmp/work: File exists
echo $?
# 1
# -pオプション有りだとエラーを吐かない
mkdir -p /tmp/work
echo $?
# 0
$ bash mkdir_example2.sh
drwxr-xr-x 2 suzukiiichiro wheel 64 1 21 13:13 /tmp/work/
mkdir: /tmp/work: File exists
1
0
$