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

ディレクトリを作成する

ディレクトリを作成する:
Bashは「mkdir」コマンドを使用して新しいディレクトリを作成します。‘make_directory.sh’という名前のファイルを作成し、次のコードを追加して、ユーザーから新しいディレクトリ名を取得します。ディレクトリ名が現在の場所に存在しない場合は、ディレクトリが作成されます。

#!/bin/bash

echo "ディレクトリ名を入力して下さい。"
read newdir

`mkdir "$newdir"`

bashコマンドでファイルを実行します。

$ bash make_directory.sh
ディレクトリ名を入力して下さい。
suzuki
$ ls
suzuki/
ヒント
よく記述していたのは以下のようなコードでした。
事前にディレクトリの存在チェックを行い、見つからなかった場合のみディレクトリを作成します。
#!/bin/bash

if [ -d "/tmp/of/work" ];then
  : # 何もしない
else
  mkdir -p "/tmp/work";
fi  

cd "/tmp/of/work";
ヒント
実はディレクトリの存在チェックを行わなくても先のスクリプトは問題なく動作します。
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 bash
drwxr-xr-x  2 suzukiiichiro  wheel  64  1 21 13:13 /tmp/work/
mkdir: /tmp/work: File exists
1
0
bash-5.1$

書籍の紹介

【20.スクリプトからの戻り値を渡す】ざっくりわかる「シェルスクリプト」

【20.スクリプトからの戻り値を渡す】ざっくりわかる「シェルスクリプト」

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

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