ฉันกำลังเขียนสคริปต์และเขียนสิ่งที่ชอบ
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
มีอะไรที่ฉันต้องการบันทึก