Estaba escribiendo algunos guiones y escribí algo como
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Lo que sucedió es que por estupidez ejecuté la segunda línea sin ejecutar la primera. Resultó que [-d ""] devuelve verdadero y la expresión se convirtió en
rm -rf /*
Afortunadamente era solo una máquina de prueba y no era un sudo, pero aunque perdí algunos datos
Mi pregunta es, ¿por qué [-d ""] devuelve verdadero? la documentación indica claramente que verifica si existe una ruta y si es una carpeta
Resolví el problema usando
[ -e $ARTIFACTS ]
que parece funcionar
Salud
rm -rf $ARTIFACTS
sin el /*
. Esto también eliminaría el $ARTIFACTS
directorio, lo cual está bien, porque si quiero estar seguro de que existe antes de poner algo en él, lo ejecutaré de mkdir -p $ARTIFACTS
todos modos. También eliminará los archivos ocultos dentro $ARTIFACTS
, lo cual también está bien, porque no escribiría rm -rf $ARTIFACTS/*
si $ARTIFACTS
contuviera algo que quisiera guardar.