Pisałem kilka scenariuszy i napisałem coś podobnego
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Stało się tak, że z głupoty wykonałem drugą linię bez wykonania pierwszej. Okazało się, że [-d ""] zwraca true, a wyrażenie się stało
rm -rf /*
Na szczęście była to tylko maszyna testowa i nie byłem sudo, ale straciłem trochę danych
Moje pytanie brzmi: dlaczego [-d ""] zwraca true ?? dokumentacja wyraźnie stwierdza, że sprawdza, czy ścieżka istnieje i czy jest folderem
Rozwiązałem problem za pomocą
[ -e $ARTIFACTS ]
który wydaje się działać
Twoje zdrowie
rm -rf $ARTIFACTSbez /*. Spowoduje to również usunięcie $ARTIFACTSkatalogu, co jest w porządku, ponieważ jeśli chcę mieć pewność, że istnieje przed włożeniem czegoś do niego, i mkdir -p $ARTIFACTStak wykonam . Usunie również ukryte pliki w środku $ARTIFACTS, co również jest w porządku, ponieważ nie pisałbym, rm -rf $ARTIFACTS/*gdyby $ARTIFACTSzawierał coś, co chciałem zapisać.