Я писал некоторые сценарии и написал что-то вроде
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
содержал что-то, что хотел сохранить.