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 $ARTIFACTStanpa /*. Ini juga akan menghapus $ARTIFACTSdirektori, yang baik-baik saja, karena jika saya ingin memastikan bahwa itu ada sebelum memasukkan sesuatu ke dalamnya, saya akan mkdir -p $ARTIFACTStetap menjalankannya . Ini juga akan menghapus file tersembunyi di dalamnya $ARTIFACTS, yang juga baik-baik saja, karena saya tidak akan menulis rm -rf $ARTIFACTS/*jika $ARTIFACTSberisi sesuatu yang ingin saya simpan.