Depuis la page de manuel de bash
:
[[ expression ]]
- retourne un statut de 0 ou 1 en fonction de l'évaluation de l'expression conditionnelle expression.
Et, pour les expressions, l'une des options est :
expression1 && expression2
- vrai si à la fois expression1
et expression2
sont vraies.
Vous pouvez donc les and
ensemble comme suit (-n
est l'opposé de -z
donc nous pouvons nous débarrasser du !
) :
if [[ -n "$var" && -e "$var" ]] ; then
echo "'$var' est non vide et le fichier existe"
fi
Cependant, je ne pense pas que ce soit nécessaire dans ce cas, -e xyzzy
est vrai si le xyzzy
fichier existe et peut facilement gérer les chaînes vides. Si c'est ce que vous voulez, alors vous n'avez pas vraiment besoin de la vérification de non-vide -z
:
pax> VAR=xyzzy
pax> if [[ -e $VAR ]] ; then echo yes ; fi
pax> VAR=/tmp
pax> if [[ -e $VAR ]] ; then echo yes ; fi
yes
En d'autres termes, utilisez simplement :
if [[ -e "$var" ]] ; then
echo "'$var' existe"
fi