ตรวจสอบว่ามีไฟล์หรือไดเร็กทอรีจากสคริปต์ทุบตีหรือไม่
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