Na página de bash
manual:
[[ 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 expression1
e expression2
são verdadeiros.
Para que você possa and
reuni-los da seguinte forma ( -n
é o oposto de -z
para 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 -z
nã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.