この文で「+」の意味は何ですか? if [[ ${array1[$i]+DEFINED} == '定義済み' ]]

この文で「+」の意味は何ですか? if [[ ${array1[$i]+DEFINED} == '定義済み' ]]

次のループで「+」の意味は何ですかfor

for i in $*;do
  if [[ ${array1[$i]+DEFINED} == 'DEFINED' ]];then
    command1
  fi
done

ベストアンサー1

バラよりhttps://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansionマニュアルに。

変数に値がある場合は「DEFINED」という単語に変わり、変数が設定されていない場合は何も変わりません。

$ unset foo; echo ">${foo+DEFINED}<"
><
$ foo=""; echo ">${foo+DEFINED}<"
>DEFINED<
$ foo=bar; echo ">${foo+DEFINED}<"
>DEFINED<

コードには連想配列があり、array1特定の配列値に対して特定の操作を実行するために位置パラメータを繰り返すようです。

# 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

おすすめ記事