Saya sedang menulis beberapa skrip dan menulis sesuatu seperti
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
Apa yang terjadi adalah karena kebodohan saya mengeksekusi baris kedua tanpa mengeksekusi yang pertama. Ternyata [-d ""] mengembalikan true dan ekspresi menjadi
rm -rf /*
Untungnya itu hanya mesin uji dan saya bukan sudo, tetapi meskipun saya kehilangan beberapa data
Pertanyaan saya adalah, mengapa [-d ""] kembali benar ?? dokumentasi dengan jelas menyatakan memeriksa apakah ada jalur dan folder
Saya memecahkan masalah dengan menggunakan
[ -e $ARTIFACTS ]
yang tampaknya berhasil
Bersulang
rm -rf $ARTIFACTS
tanpa /*
. Ini juga akan menghapus $ARTIFACTS
direktori, yang baik-baik saja, karena jika saya ingin memastikan bahwa itu ada sebelum memasukkan sesuatu ke dalamnya, saya akan mkdir -p $ARTIFACTS
tetap menjalankannya . Ini juga akan menghapus file tersembunyi di dalamnya $ARTIFACTS
, yang juga baik-baik saja, karena saya tidak akan menulis rm -rf $ARTIFACTS/*
jika $ARTIFACTS
berisi sesuatu yang ingin saya simpan.