Eu estava escrevendo alguns scripts e escrevi algo como
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
O que aconteceu é que, por estupidez, executei a segunda linha sem executar a primeira. Acontece que [-d ""] retorna verdadeiro e a expressão se torna
rm -rf /*
Felizmente, era apenas uma máquina de teste e eu não era um sudo, mas apesar de ter perdido alguns dados
Minha pergunta é: por que [-d ""] retorna true ?? a documentação afirma claramente que verifica se existe um caminho e se é uma pasta
Eu resolvi o problema usando
[ -e $ARTIFACTS ]
o que parece funcionar
Felicidades
rm -rf $ARTIFACTS
sem o /*
. Isso também excluiria o $ARTIFACTS
diretório, o que é bom, porque se eu quiser ter certeza de que ele existe antes de colocar algo nele, executarei de mkdir -p $ARTIFACTS
qualquer maneira. Ele também excluirá os arquivos ocultos $ARTIFACTS
, o que também é bom, porque eu não escreveria rm -rf $ARTIFACTS/*
se $ARTIFACTS
contivesse algo que quisesse salvar.