Ich habe einige Skripte geschrieben und so etwas geschrieben
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Was passiert ist, ist, dass ich aus Dummheit die zweite Zeile ausgeführt habe, ohne die erste auszuführen. Es stellte sich heraus, dass [-d ""] true zurückgibt und der Ausdruck wurde
rm -rf /*
Zum Glück war es nur eine Testmaschine und ich war kein Sudo, aber obwohl ich einige Daten verloren habe
Meine Frage ist, warum [-d ""] true zurückgibt? In der Dokumentation wird eindeutig angegeben, ob ein Pfad vorhanden ist und ein Ordner ist
Ich habe das Problem mit gelöst
[ -e $ARTIFACTS ]
das scheint zu funktionieren
Prost
rm -rf $ARTIFACTS
ohne das /*
. Dies würde auch das $ARTIFACTS
Verzeichnis löschen , was in Ordnung ist, denn wenn ich sicher sein möchte, dass es existiert, bevor ich etwas hineinlege, werde ich es mkdir -p $ARTIFACTS
trotzdem ausführen . Es werden auch versteckte Dateien darin gelöscht $ARTIFACTS
, was auch in Ordnung ist, da ich nicht schreiben würde, rm -rf $ARTIFACTS/*
wenn etwas$ARTIFACTS
enthalten wäre, das ich speichern wollte.