ProAnswers.org

Command to check Directory Bash shell script?

In Bash shell script What command can be used to check if a directory does or does not exist?

	To check if a directory exists in a bash shell script you can use the following:

if [ -d “$DIRECTORY” ]; then
# Control will enter here if $DIRECTORY exists
fi

	Or to check if a directory doesn't exist:

if [ ! -d “$DIRECTORY” ]; then
# Control will enter here if $DIRECTORY doesn’t exist
fi

	However, as [Jon Ericson](http://stackoverflow.com/users/1438/jon-ericson) points out (thanks Jon), subsequent commands may not work as intended if you do not take into account that a symbolic link to a directory will also pass this check. E.g. running this:

ln -s “$ACTUAL_DIR” “$SYMLINK”
if [ -d “$SYMLINK” ]; then
rmdir “$SYMLINK”
fi

	Will produce the error message:

rmdir: failed to remove `symlink’: Not a directory

	So symbolic links may have to be treated differently, if subsequent commands expect directories:

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