J'écrivais des scripts et écrivais quelque chose comme
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Ce qui s'est passé, c'est que par stupidité j'ai exécuté la deuxième ligne sans exécuter la première. Il s'est avéré que [-d ""] renvoie vrai et l'expression est devenue
rm -rf /*
Heureusement, ce n'était qu'une machine de test et je n'étais pas un sudo, mais même si j'ai perdu des données
Ma question est, pourquoi [-d ""] retourne vrai ?? la documentation indique clairement qu'il vérifie si un chemin existe et s'il s'agit d'un dossier
J'ai résolu le problème en utilisant
[ -e $ARTIFACTS ]
qui semble fonctionner
À votre santé
rm -rf $ARTIFACTS
sans /*
. Cela supprimerait également le $ARTIFACTS
répertoire, ce qui est bien, car si je veux être sûr qu'il existe avant d'y mettre quelque chose, je l'exécuterai mkdir -p $ARTIFACTS
quand même. Il supprimera également les fichiers cachés à l'intérieur $ARTIFACTS
, ce qui est également bien, car je n'écrirais pas rm -rf $ARTIFACTS/*
s'il $ARTIFACTS
contenait quelque chose que je voulais enregistrer.