เป็นไปได้หรือไม่ที่จะตรวจสอบว่ามีไดเร็กทอรีอยู่หรือไม่และลบออกใน Unix โดยใช้คำสั่งเดียวหรือไม่ ฉันมีสถานการณ์ที่ฉันใช้งาน ANT 'sshexec' ซึ่งฉันสามารถรันได้เพียงคำสั่งเดียวในเครื่องระยะไกล และฉันต้องตรวจสอบว่ามีไดเรกทอรีอยู่หรือไม่และลบออก ...
เป็นไปได้หรือไม่ที่จะตรวจสอบว่ามีไดเร็กทอรีอยู่หรือไม่และลบออกใน Unix โดยใช้คำสั่งเดียวหรือไม่ ฉันมีสถานการณ์ที่ฉันใช้งาน ANT 'sshexec' ซึ่งฉันสามารถรันได้เพียงคำสั่งเดียวในเครื่องระยะไกล และฉันต้องตรวจสอบว่ามีไดเรกทอรีอยู่หรือไม่และลบออก ...
คำตอบ:
สมมติว่า$WORKING_DIR
ถูกตั้งค่าเป็นไดเร็กทอรี ... ซับเดียวนี้ควรทำ:
if [ -d "$WORKING_DIR" ]; then rm -Rf $WORKING_DIR; fi
(มิฉะนั้นให้แทนที่ด้วยไดเรกทอรีของคุณ)
ทำไมไม่ใช้rm -rf /some/dir
? ซึ่งจะลบไดเรกทอรีหากมีอยู่มิฉะนั้นไม่ต้องทำอะไรเลย ซึ่งแตกต่างจากrm -r /some/dir
รสชาติของคำสั่งนี้จะไม่พังหากไม่มีโฟลเดอร์
ลอง:
bash -c '[ -d my_mystery_dirname ] && run_this_command'
แก้ไข : จะใช้งานได้ถ้าคุณสามารถรัน bash บนเครื่องระยะไกลได้ ....
แก้ไข 2 : ใน bash [ -d something ]
ตรวจสอบว่ามีไดเร็กทอรีชื่อ 'something' หรือไม่โดยส่งคืนรหัสความสำเร็จหากมีอยู่และเป็นไดเร็กทอรี การเชื่อมคำสั่งด้วย && รันคำสั่งที่สองก็ต่อเมื่อคำสั่งแรกสำเร็จ ดังนั้น[ -d somedir ] && command
รันคำสั่งก็ต่อเมื่อมีไดเร็กทอรีอยู่
นี่คืออีกหนึ่งซับ:
[[ -d /tmp/test ]] && rm -r /tmp/test