【22.存在を確認してディレクトリを作成する】ざっくりわかる「シェルスクリプト」

存在を確認してディレクトリを作成する

存在を確認してディレクトリを作成します。
‘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
$

書籍の紹介

【21.ディレクトリを作成する】ざっくりわかる「シェルスクリプト」

【21.ディレクトリを作成する】ざっくりわかる「シェルスクリプト」

【23.ファイルを読む】ざっくりわかる「シェルスクリプト」

【23.ファイルを読む】ざっくりわかる「シェルスクリプト」