4462 Stimmen

Wie kann ich prüfen, ob ein Verzeichnis in einem Bash-Shell-Skript existiert?

Mit welchem Befehl kann man in einem Bash-Shell-Skript prüfen, ob ein Verzeichnis existiert oder nicht?

15voto

bailey86 Punkte 241

Die Verwendung des -e check sucht nach Dateien, und zwar auch nach Verzeichnissen.

if [ -e ${FILE_PATH_AND_NAME} ]
then
    echo "The file or directory exists."
fi

12voto

Brad Parks Punkte 59613

Diese Antwort als Shell-Skript verpackt

Beispiele

$ is_dir ~                           
YES

$ is_dir /tmp                        
YES

$ is_dir ~/bin                       
YES

$ mkdir '/tmp/test me'

$ is_dir '/tmp/test me'
YES

$ is_dir /asdf/asdf                  
NO

# Example of calling it in another script
DIR=~/mydata
if [ $(is_dir $DIR) == "NO" ]
then
  echo "Folder doesnt exist: $DIR";
  exit;
fi

is_dir

function show_help()
{
  IT=$(CAT <<EOF

  usage: DIR
  output: YES or NO, depending on whether or not the directory exists.

  )
  echo "$IT"
  exit
}

if [ "$1" == "help" ]
then
  show_help
fi
if [ -z "$1" ]
then
  show_help
fi

DIR=$1
if [ -d $DIR ]; then 
   echo "YES";
   exit;
fi
echo "NO";

10voto

kenorb Punkte 134883

Gemäß Jonathan Kommentar:

Wenn Sie das Verzeichnis erstellen wollen und es noch nicht existiert, dann ist die einfachste Technik die Verwendung von mkdir -p das das Verzeichnis - und alle fehlenden Verzeichnisse im Pfad - erstellt und nicht fehlschlägt, wenn das Verzeichnis bereits existiert, so dass Sie alles auf einmal mit:

mkdir -p /some/directory/you/want/to/exist || exit 1

10voto

Aybak3k Punkte 84

One Liner:

[[ -d $Directory ]] && echo true

9voto

Abhishek Gurjar Punkte 7320

In einer Art ternär Form,

[ -d "$directory" ] && echo "exist" || echo "not exist"

Und mit test :

test -d "$directory" && echo "exist" || echo "not exist"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X