-L คือการทดสอบสำหรับไฟล์ที่มีอยู่และยังเป็นลิงค์สัญลักษณ์
หากคุณไม่ต้องการทดสอบไฟล์ที่เป็นลิงก์สัญลักษณ์ แต่เพียงทดสอบเพื่อดูว่ามีอยู่หรือไม่โดยไม่คำนึงถึงประเภท (ไฟล์ไดเรกทอรีซ็อกเก็ต ฯลฯ ) ให้ใช้ -e
ดังนั้นหากไฟล์เป็นไฟล์จริงๆและไม่ใช่แค่ลิงค์สัญลักษณ์คุณสามารถทำการทดสอบเหล่านี้ทั้งหมดและรับสถานะการออกซึ่งค่าระบุเงื่อนไขข้อผิดพลาด
if [ ! \( -e "${file}" \) ]
then
echo "%ERROR: file ${file} does not exist!" >&2
exit 1
elif [ ! \( -f "${file}" \) ]
then
echo "%ERROR: ${file} is not a file!" >&2
exit 2
elif [ ! \( -r "${file}" \) ]
then
echo "%ERROR: file ${file} is not readable!" >&2
exit 3
elif [ ! \( -s "${file}" \) ]
then
echo "%ERROR: file ${file} is empty!" >&2
exit 4
fi