![この文で「+」の意味は何ですか? if [[ ${array1[$i]+DEFINED} == '定義済み' ]]](https://linux33.com/image/11187/%E3%81%93%E3%81%AE%E6%96%87%E3%81%A7%E3%80%8C%2B%E3%80%8D%E3%81%AE%E6%84%8F%E5%91%B3%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20if%20%5B%5B%20%24%7Barray1%5B%24i%5D%2BDEFINED%7D%20%3D%3D%20'%E5%AE%9A%E7%BE%A9%E6%B8%88%E3%81%BF'%20%5D%5D.png)
次のループで「+」の意味は何ですか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