シェルスクリプト(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
コメント