Mit welchem Befehl kann man in einem Bash-Shell-Skript prüfen, ob ein Verzeichnis existiert oder nicht?
-a ist in seiner Wirkung identisch mit -e. Es wurde "veraltet", und von seiner Verwendung wird abgeraten.
Mit welchem Befehl kann man in einem Bash-Shell-Skript prüfen, ob ein Verzeichnis existiert oder nicht?
find
Überprüfen Sie das Vorhandensein des Ordners in Unterverzeichnissen:
found=`find -type d -name "myDirectory"`
if [ -n "$found" ]
then
# The variable 'found' contains the full path where "myDirectory" is.
# It may contain several lines if there are several folders named "myDirectory".
fi
Überprüfen Sie das Vorhandensein von einem oder mehreren Ordnern anhand eines Musters im aktuellen Verzeichnis:
found=`find -maxdepth 1 -type d -name "my*"`
if [ -n "$found" ]
then
# The variable 'found' contains the full path where folders "my*" have been found.
fi
Beide Kombinationen. Im folgenden Beispiel wird geprüft, ob der Ordner im aktuellen Verzeichnis vorhanden ist:
found=`find -maxdepth 1 -type d -name "myDirectory"`
if [ -n "$found" ]
then
# The variable 'found' is not empty => "myDirectory"` exists.
fi
Erinnern Sie sich an space
nach [
-> [` `-d . ich bekam eine Fehlermeldung wegen eines fehlenden Leerzeichens
AGAIN Diese Antwort wurde bereits 2008 gegeben, allerdings mit nützlicheren Erläuterungen. Neu ist hier nur der Online-Spielplatz.
Um einen kugelsicheren Ansatz zu erhalten, sollten Sie eigentlich mehrere Instrumente verwenden:
DIR_PATH=`readlink -f "${the_stuff_you_test}"` # Get rid of symlinks and get abs path
if [[ -d "${DIR_PATH}" ]] ; Then # Now you're testing
echo "It's a dir";
fi
Sie brauchen sich keine Gedanken über Leerzeichen und Sonderzeichen zu machen, solange Sie "${}"
.
Beachten Sie, dass [[]]
ist nicht so portabel wie []
aber da die meisten Leute mit modernen Versionen der Bash arbeiten (schließlich arbeiten die meisten Leute nicht einmal mit der Kommandozeile :-p), ist der Nutzen größer als die Mühe.
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.