8 Stimmen

Wie man die Optionen in If-Bedingungen der Shell findet

In einem meiner Shell-Skripte sehe ich

if [[ ! -d directory1 || ! -L directory ]] ; then

Was bedeuten die Optionen -d und -L hier? Wo kann ich Informationen über die Optionen finden, die in einer if-Bedingung verwendet werden können?

11voto

Dennis Williamson Punkte 322329

Sie können Hilfe test verwenden, um die meisten von [[ akzeptierten Optionen anzeigen zu lassen.

Sie können auch Hilfe [ machen, um zusätzliche Informationen zu erhalten. Sie können Hilfe [[ verwenden, um Informationen zu diesem Typ von Bedingungen zu erhalten.

Siehe auch man bash im Abschnitt "BEDINGTE AUSDRÜCKE".

1voto

Levon Punkte 134187

Der -d überprüft, ob das angegebene Verzeichnis existiert. Der -L Test prüft auf einen symbolischen Link.

Die Datei-Testoperatoren aus dem Advanced Bash-Scripting Guide erläutern die verschiedenen Optionen. Und hier ist die man-Seite für bash, die auch durch Eingabe von man bash im Terminal gefunden werden kann.

1voto

camh Punkte 38167

bash verfügt über eine integrierte Hilfe mit dem help-Befehl. Sie können ganz einfach die Optionen eines bash-Befehls mit help herausfinden:

$ help [[
...
Ausdrücke bestehen aus den gleichen Primäranweisungen, die auch vom `test'-Befehl verwendet werden
...
$ help test
test: test [expr]
    Bewertet die bedingte Ausdruck.
    ...
    [die Antwort, die Sie wollen]

0voto

David W. Punkte 101611

Im Bourne-Shell waren [ und test mit dem gleichen ausführbaren Programm verbunden. Daher finden Sie viele der verschiedenen verfügbaren Tests in der Test-Manpage.

Dieses:

if [[ ! -d directory1 || ! -L directory ]] ; then

besagt, wenn directory1 kein Verzeichnis ist oder wenn directory kein Link ist.

Ich glaube, die richtige Syntax sollte sein:

if [[ ! -d $directory1 ] ||  [ ! -L $directory ]] ; then

oder

if [[ ! -d $directory1 -o ! -L $directory ]] ; then

Ist die Zeile in Ihrem OP korrekt?

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