จากbashmanpage:
[[ 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