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

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

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

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

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

DIR="~/path/to/dir"
if [ ! -d "$DIR" ]; then
  # 実行する処理、以下は例
  mkdir -p "$DIR"
fi

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

DIR="~/path/to/link_or_dir"
if [ -d "$LINK_OR_DIR" ]; then 
  if [ -L "$LINK_OR_DIR" ]; then
    echo "シンボリックリンクだった時の処理をここに書く"
  else
    echo "ディレクトリだった時の処理をここに書く"
  fi
fi