Из 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; однако, чтобы в полной мере воспользоваться "bashisms", см. ответ @ paxdiablo.