Kommando nicht gefunden-Bash IF-ELSE-Bedingung, wenn mit [! -d "$DIR"]
Ich habe einen code wie folgt
#!/bin/bash
DIR="test_dir/";
if [! -d "$DIR"]; then
# If it doesn't create it
mkdir $DIR
fi
Aber ausführen, warum es mir dieses:
./mycode.sh: line 16: [!: command not found
Was ist der richtige Weg, es zu tun?
- Der name
[
ist der name eines Befehls nicht zufällig Satzzeichen. Ebenso benötigen Sie einen Raum zwischencat
und/etc/passwd
imcat/etc/passwd
, so müssen Sie ein Leerzeichen zwischen[
(der name des Befehls) und!
(eines Ihrer Argumente). Ebenso das Letzte argument muss]
. Diese Anforderung geht zurück zu der alten Geschichte (7th Edition UNIX™ - circa 1978 oder früher), wenn die shell nicht über einetest
(aka[
) eingebaut und das nurtest
Befehl war/bin/test
und seiner (harten) link/bin/[
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie ein Leerzeichen zwischen [ und !. Und vor ] als gut.
Es ist auch eine gute Idee, um Ihr Angebot variable:
Fügen Sie einige Räume:
Könnte man auch versuchen, Sie einfach sagen:
Wäre dies das Verzeichnis erstellen wenn es nicht vorhanden ist.
mkdir -p "$DIR"
(unter Verwendung des upper-case-name, wie in der Frage). Diese erstellt alle Verzeichnisse, die benötigt werden auf dem Weg, aber erfolgreich, wenn das Verzeichnis bereits vorhanden ist.mkdir -p foo
von selbst macht keinen Schaden.