Consulte o link no manual.
se essa variável tiver um valor, substitua a palavra "DEFINIDO", senão se a variável não estiver definida, substitua nada.
$ unset foo; echo ">${foo+DEFINED}<"
><
$ foo=""; echo ">${foo+DEFINED}<"
>DEFINED<
$ foo=bar; echo ">${foo+DEFINED}<"
>DEFINED<
Seu código parece que há uma matriz associativa array1
e você está interagindo sobre os parâmetros posicionais para fazer algo com alguns dos valores da matriz.
# set up the array
declare -A array1
array1[abc]=first
array1[def]=second
array1[ghi]=third
# set the positional parameters
set -- ghi abc
for i in "$@"; do
if [[ ${array1[$i]+DEFINED} == 'DEFINED' ]]; then
echo "found $i -> ${array1[$i]}"
fi
done
found ghi -> third
found abc -> first