से bashमैनपेज:
[[ 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; हालाँकि, "बशीज़" का पूरा फायदा उठाने के लिए, @ paxdiablo का जवाब देखें।