จากbash
manpage:
[[ expression ]]
- คืนสถานะ 0 หรือ 1 ขึ้นอยู่กับการประเมินผลของนิพจน์เงื่อนไขนิพจน์
และสำหรับนิพจน์หนึ่งในตัวเลือกคือ:
expression1 && expression2
- เป็นจริงถ้าทั้งสองexpression1
และexpression2
เป็นจริง
ดังนั้นคุณสามารถand
รวมเข้าด้วยกันดังต่อไปนี้ ( -n
ตรงข้าม-z
เพื่อให้เราสามารถกำจัด!
):
if [[ -n "$var" && -e "$var" ]] ; then
echo "'$var' is non-empty and the file exists"
fi
อย่างไรก็ตามฉันไม่คิดว่ามันจำเป็นในกรณีนี้-e xyzzy
เป็นจริงหากxyzzy
ไฟล์นั้นมีอยู่และสามารถจัดการกับสตริงว่างได้อย่างง่ายดาย ถ้านั่นคือสิ่งที่คุณต้องการจากนั้นคุณไม่จำเป็นต้องมี-z
เช็คเปล่า:
pax> VAR=xyzzy
pax> if [[ -e $VAR ]] ; then echo yes ; fi
pax> VAR=/tmp
pax> if [[ -e $VAR ]] ; then echo yes ; fi
yes
ในคำอื่น ๆ เพียงใช้:
if [[ -e "$var" ]] ; then
echo "'$var' exists"
fi
bash
; อย่างไรก็ตามเพื่อใช้ประโยชน์จาก "bashisms" อย่างเต็มที่โปรดดูคำตอบของ @ paxdiablo