Na página de bashmanual:
[[ expression ]] - retorna um status de 0 ou 1, dependendo da avaliação da expressão da expressão condicional.
E, para expressões, uma das opções é:
expression1 && expression2- verdadeiro se ambos expression1e expression2são verdadeiros.
Para que você possa andreuni-los da seguinte forma ( -né o oposto de -zpara nos livrarmos do !):
if [[ -n "$var" && -e "$var" ]] ; then
echo "'$var' is non-empty and the file exists"
fi
No entanto, acho que não é necessário, neste caso, -e xyzzyé verdade se o xyzzy arquivo existe e pode lidar facilmente com cadeias de caracteres vazias. Se é isso que você deseja, na verdade você não precisa da verificação -znão vazia:
pax> VAR=xyzzy
pax> if [[ -e $VAR ]] ; then echo yes ; fi
pax> VAR=/tmp
pax> if [[ -e $VAR ]] ; then echo yes ; fi
yes
Em outras palavras, basta usar:
if [[ -e "$var" ]] ; then
echo "'$var' exists"
fi
bash; no entanto, para aproveitar ao máximo os "basismos", consulte a resposta de @ paxdiablo.