Я писал некоторые сценарии и написал что-то вроде
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Случилось так, что по глупости я выполнил вторую строку, не выполняя первую. Оказалось, что [-d ""] возвращает true, и выражение стало
rm -rf /*
К счастью, это была только тестовая машина, и я не был sudo, но хотя я потерял некоторые данные
Мой вопрос, почему [-d ""] возвращает true ?? документация ясно заявляет, что проверяет, существует ли путь и является ли папка
Я решил проблему с помощью
[ -e $ARTIFACTS ]
который, кажется, работает
ура
rm -rf $ARTIFACTSбез /*. Это также удалит $ARTIFACTSкаталог, и это нормально, потому что если я хочу быть уверенным, что он существует, прежде чем что-то в него помещать, я все mkdir -p $ARTIFACTSравно выполню. Он также удалит скрытые файлы внутри $ARTIFACTS, что тоже хорошо, потому что я бы не стал писать, rm -rf $ARTIFACTS/*если бы $ARTIFACTSсодержал что-то, что хотел сохранить.