Я писав кілька сценаріїв і писав щось подібне
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Що сталося, це те, що з глупоти я виконав другий рядок, не виконавши першого. Виявилося, що [-d ""] повертає істину і вираз став
rm -rf /*
На щастя, це була лише тестова машина, і я не судо, але хоч і втратив деякі дані
Моє запитання, чому [-d ""] повертати справжню ?? в документації чітко зазначено, що вона перевіряє, чи існує шлях і чи папка
Я вирішив проблему, використовуючи
[ -e $ARTIFACTS ]
який, здається, працює
Ура
rm -rf $ARTIFACTSбез /*. Це також видалить $ARTIFACTSкаталог, що добре, тому що якщо я хочу бути впевненим, що він існує, перш ніж щось у нього вставити, я все mkdir -p $ARTIFACTSодно виконаю . Він також видалить приховані файли всередині $ARTIFACTS, що також добре, тому що я б не писав, rm -rf $ARTIFACTS/*якщо $ARTIFACTSмістив би щось, що хотів би зберегти.