Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

ตรวจสอบความมีอยู่ของไฟล์หรือไดเรกทอรีใน Bash: คู่มือปฏิบัติพร้อมตัวอย่าง

คุณสามารถตรวจสอบได้ว่าไฟล์หรือไดเรกทอรีมีอยู่จริงบนระบบ Linux โดยใช้คำสั่ง test ใน bash ดูตัวอย่างด้านล่างเพื่อดูวิธีการ

ไวยากรณ์คำสั่ง test

test EXPRESSION

คำสั่ง test จะประเมิน EXPRESSION นิพจน์สามารถสร้างได้โดยใช้ตัวดำเนินการต่อไปนี้ และสามารถรวมตัวดำเนินการหลายตัวเข้าด้วยกันได้

-d fileTrue หาก file เป็น Directory. [[ -d demofile ]]
-e fileTrue หาก file มีอยู่ (Exists). [[ -e demofile ]]
-f fileTrue หาก file เป็น Regular File. [[ -f demofile ]]
-h fileTrue หาก file เป็น Symbolic Link. [[ -h demofile ]]
-L fileTrue หาก file เป็น Symbolic Link. [[ -L demofile ]]
-s fileTrue หาก file มีขนาด (Size) มากกว่าศูนย์. [[ -s demofile ]]

คำสั่ง test ยังสามารถใช้สำหรับการเปรียบเทียบประเภทอื่นๆ ได้ เช่น เปรียบเทียบวันที่ไฟล์ ประเภท และสิทธิ์ และเปรียบเทียบสตริงและตัวเลข – เพื่อดูคู่มือผู้ใช้สำหรับคำสั่ง test ให้รันคำสั่งต่อไปนี้ใน Linux shell:

man test

คุณน่าจะสังเกตเห็นวงเล็บเหลี่ยมคู่ [[]] (square brackets) – วงเล็บเหลี่ยมสามารถใช้แทนคำสั่ง find ได้ – แต่เราจะหลีกเลี่ยงการทำเช่นนั้นเพื่อให้เข้าใจง่าย

ตัวอย่างคำสั่ง test

คุณสามารถตรวจสอบได้อย่างรวดเร็วว่าไฟล์หรือไดเรกทอรีมีอยู่โดยใช้ตัวดำเนินการ && บน Linux shell ซึ่งจะรันต่อก็ต่อเมื่อคำสั่ง test ส่งคืนสถานะ TRUE:

test -e /path/to/myfile && echo "File or directory exists."

การใช้คำสั่ง test กับคำสั่ง if

คุณสามารถสร้างสคริปต์พร้อมตรรกะเงื่อนไขได้โดยใช้คำสั่ง if..else และ find:

if test -f path/to/myfile; then echo "File exists and is a regular file." elif test -d path/to/myfile; then echo "File exists and is a directory." else echo "File does not exist." fi

สรุป

เมื่อเขียนลงในระบบไฟล์ของผู้ใช้ ไม่ควรแค่แก้ไขหรือสร้างไฟล์โดยไม่ตรวจสอบก่อนว่ามีอะไรอยู่แล้ว – คุณอาจทำลายข้อมูลที่มีค่าและ陷入麻烦

สคริปต์ที่ดีจะตรวจสอบความมีอยู่ของไฟล์ก่อน และถามผู้ใช้ว่าควรดำเนินการอย่างไร – และวิธีด้านบนสามารถนำไปพัฒนาเพื่อทำได้อย่างนั้น

สำหรับบทช่วยสอนเพิ่มเติมเกี่ยวกับการนำทางด้วย Linux shell คลิกที่นี่!