ฉันกำลังเขียนสคริปต์และเขียนสิ่งที่ชอบ
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
สิ่งที่เกิดขึ้นคือความโง่เขลาของฉันที่ฉันได้ดำเนินการบรรทัดที่สองโดยไม่ต้องดำเนินการครั้งแรก มันกลับกลายเป็นว่า [-d ""] คืนค่าจริงและนิพจน์กลายเป็น
rm -rf /*
โชคดีที่มันเป็นเพียงเครื่องทดสอบและฉันไม่ใช่ sudo แต่ถึงแม้ว่าฉันทำข้อมูลหาย
คำถามของฉันคือทำไม [-d ""] กลับจริงหรือ เอกสารระบุอย่างชัดเจนว่าตรวจสอบว่ามีเส้นทางอยู่หรือไม่และเป็นโฟลเดอร์
ฉันแก้ไขปัญหาโดยใช้
[ -e $ARTIFACTS ]
ซึ่งดูเหมือนว่าจะทำงาน
ไชโย
rm -rf $ARTIFACTS /*นี่จะเป็นการลบ$ARTIFACTSไดเรกทอรีซึ่งก็ดีเพราะถ้าฉันต้องการให้แน่ใจว่ามันมีอยู่ก่อนที่จะใส่อะไรลงไปฉันจะดำเนินการmkdir -p $ARTIFACTSต่อไป มันจะลบไฟล์ที่ซ่อนอยู่ข้างใน$ARTIFACTSซึ่งก็ใช้ได้เพราะฉันจะไม่เขียนrm -rf $ARTIFACTS/*ถ้า$ARTIFACTSมีอะไรที่ฉันต้องการบันทึก