Qual é o significado de '+' nesta declaração. if [[$ {array1 [$ i] + DEFINIDO} == 'DEFINIDO']]

0

Qual é o significado de "+" no seguinte for loop:

for i in $*;do
  if [[ ${array1[$i]+DEFINED} == 'DEFINED' ]];then
    command1
  fi
done
    
por Rakesh02 21.09.2018 / 13:30

1 resposta

2

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
    
por 21.09.2018 / 13:34