Bash シェル スクリプト内でディレクトリが存在するかどうかを確認するコマンドは何ですか?
ベストアンサー1
ディレクトリが存在するかどうかを確認するには:
if [ -d "$DIRECTORY" ]; then
echo "$DIRECTORY does exist."
fi
ディレクトリが存在しないかどうかを確認するには:
if [ ! -d "$DIRECTORY" ]; then
echo "$DIRECTORY does not exist."
fi
しかし、ジョン・エリクソン指摘されているように、ディレクトリへのシンボリック リンクもこのチェックを通過することを考慮しないと、後続のコマンドが意図したとおりに動作しない可能性があります。たとえば、これを実行します。
ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then
rmdir "$SYMLINK"
fi
次のエラー メッセージが生成されます:
rmdir: failed to remove `symlink': Not a directory
したがって、後続のコマンドがディレクトリを期待する場合、シンボリック リンクを異なる方法で処理する必要がある可能性があります。
if [ -d "$LINK_OR_DIR" ]; then
if [ -L "$LINK_OR_DIR" ]; then
# It is a symlink!
# Symbolic link specific commands go here.
rm "$LINK_OR_DIR"
else
# It's a directory!
# Directory command goes here.
rmdir "$LINK_OR_DIR"
fi
fi
変数を囲む二重引用符に特に注意してください。その理由は8jeanが説明しています。別の回答では。
変数にスペースやその他の異常な文字が含まれていると、スクリプトが失敗する可能性があります。