วิธีตรวจสอบว่ามีไฟล์หรือไดเรกทอรีอยู่ใน Bash Shell Script หรือไม่

ตรวจสอบว่ามีไฟล์หรือไดเร็กทอรีจากสคริปต์ทุบตีหรือไม่

Bash ใช้สำหรับทำให้คำสั่งที่ดำเนินการเป็นประจำโดยอัตโนมัติใน Linux คำสั่งที่ใช้สำหรับดำเนินการกับไฟล์/ไดเร็กทอรีนั้นค่อนข้างจะใช้บ่อย และโดยปกติ ก่อนที่เราจะรันคำสั่งดังกล่าว เราจำเป็นต้องตรวจสอบว่าไฟล์หรือไดเร็กทอรีนั้นมีอยู่จริงหรือไม่ ให้เราดูวิธีการดำเนินการตรวจสอบนี้

ไวยากรณ์และการใช้งาน

ไฟล์

เพื่อตรวจสอบว่ามีไฟล์อยู่หรือไม่ให้ใช้ไวยากรณ์ต่อไปนี้:

[ -f ]

การแสดงออก [ -f ] คืนค่า 0 นั่นคือความสำเร็จ if มีอยู่จริง และหากไม่มีอยู่ จะแสดงสถานะที่ไม่ใช่ศูนย์ โดยทั่วไปจะใช้เป็นเงื่อนไขใน ถ้า คำให้การ.

ถ้า [ -f ] แล้ว fi

เพื่อลบล้างค่าที่ส่งคืนเพียงแค่นำหน้า -f ด้วยตัวดำเนินการปฏิเสธ (!).

ถ้า [ ! -f ] แล้วก็ fi

ในกรณีนี้เงื่อนไขจะเป็นไปตามถ้า file ไม่ได้อยู่เนื่องจากสถานะไม่ศูนย์ที่ส่งคืน (เท็จ) จะถูกปฏิเสธและถือเป็น 0 (จริง)

โปรดทราบว่าหากไฟล์ที่จะตรวจสอบไม่มีอยู่ในไดเร็กทอรีปัจจุบันและมีอยู่ในไดเร็กทอรีอื่น ควรระบุพาธแบบเต็มของไฟล์แทนการระบุเฉพาะชื่อไฟล์

ไดเรกทอรี

ไวยากรณ์ที่คล้ายกันที่ใช้สำหรับตรวจสอบไฟล์ใช้สำหรับตรวจสอบไดเร็กทอรี

[ -d ]

คล้ายกับคำสั่งสำหรับไฟล์ คำสั่งนี้จะคืนค่า 0, นั่นคือความสำเร็จ ถ้าไดเร็กทอรี มีอยู่ และไม่ใช่ศูนย์ กล่าวคือ สถานะความล้มเหลวจะถูกส่งคืนหากไม่มีอยู่ นอกจากนี้ยังใช้กันทั่วไปใน an ถ้า เงื่อนไขคำสั่ง

ถ้า [ -d ] แล้ว fi

หากต้องการลบล้างสถานะที่ส่งคืน ให้นำหน้า -d ด้วยตัวดำเนินการปฏิเสธ (!).

ถ้า [ ! -d ] แล้วก็ fi

เงื่อนไขจะเป็นไปตาม (สถานะ 0) ในกรณีนี้หากไม่มีไดเร็กทอรี และจะล้มเหลว (สถานะไม่ใช่ศูนย์) หากมีไดเร็กทอรีอยู่

ดังที่กล่าวไว้ก่อนหน้านี้สำหรับไฟล์ หากไดเร็กทอรีที่จะตรวจสอบอยู่ที่ตำแหน่งอื่นและไม่ใช่ไดเร็กทอรีปัจจุบัน ต้องป้อนพาธไดเร็กทอรีทั้งหมดแทนการป้อนเพียงชื่อไดเร็กทอรี

💡 ไวยากรณ์วงเล็บ ( [...] ) ที่ใช้ที่นี่คือคำสั่ง Linux จริง ๆ ที่เรียกว่า ทดสอบ. ตัวเลือก -f และ -d เป็นคุณสมบัติของคำสั่งนี้ สำหรับข้อมูลเพิ่มเติม โปรดดูหน้าคู่มือการทดสอบ ( แบบทดสอบผู้ชาย ).

ตรวจสอบจาก Bash Script

ในตัวอย่างข้างต้น เราได้ใช้ไวยากรณ์บนเทอร์มินัลโดยตรง เชลล์ทุกครั้งที่พบลูปหรือคำสั่งเงื่อนไข (ถ้า ในกรณีของเรา) มันยังคงพรอมต์และให้ผู้ใช้เข้าสู่บล็อกต่อไป

ไวยากรณ์เดียวกันสามารถใช้ได้จากภายในสคริปต์ทุบตี

ดิ #!/bin/bash ที่จุดเริ่มต้นระบุล่ามที่จะใช้เมื่อไฟล์ถูกดำเนินการ แม้ว่า Bash จะเป็นเชลล์ที่ใช้กันมากที่สุดในปัจจุบัน ผู้ใช้บางคนชอบเชลล์เช่น zshซึ่งควรระบุแทน bash ที่จุดเริ่มต้นของไฟล์นี้

เพื่อให้สิทธิ์ในการดำเนินการ สำหรับไฟล์นี้ ให้รัน:

chmod +x test.sh

ในที่สุด, เพื่อรันไฟล์, วิ่ง:

./test.sh