シェルスクリプトでディレクトリの存在を確認する方法

シェル

シェルスクリプト(Bashスクリプト)でディレクトリが存在した場合のみコマンドを実行するには、以下のように書きます。

#!/bin/bash

if [[ -d /tmp/path/to/dir ]]; then
  # 実行する処理、以下は例
  ls -l /tmp/path/to/dir
fi

これで、「/tmp/path/to/dir」が存在する場合のみ「ls -l /tmp/path/to/dir」が実行されます。

ディレクトリ存在しない場合にコマンドを実行することもできます。以下の例では、シェル変数「DIR」にディレクトリへのパスを入れて実行しています。

#!/bin/bash

DIR="/tmp/path/to/dir"
if [[ ! -d "$DIR" ]]; then
  # ディレクトリが存在しない時に実行する処理、以下は例
  mkdir -p "$DIR"
fi

なお、指定したパス(上記の例では/tmp/path/to/dir)がシンボリックリンクだった場合、リンク先がディレクトリかどうかで判定されます。
指定したパス自体がシンボリックリンクかどうかを調べるには、「-L」を使います。

#!/bin/bash

LINK_OR_DIR="/tmp/path/to/link_or_dir"
if [[ -d "$LINK_OR_DIR" ]]; then 
  if [[ -L "$LINK_OR_DIR" ]]; then
    echo "シンボリックリンクだった時の処理をここに書く"
  else
    echo "ディレクトリだった時の処理をここに書く"
  fi
fi
シェル初心者向け
\シェアお願いします/
LFI

コメント

タイトルとURLをコピーしました