![이 문장에서 "+"의 의미는 무엇입니까? if [[ ${array1[$i]+DEFINED} == '정의됨' ]]](https://linux55.com/image/11187/%EC%9D%B4%20%EB%AC%B8%EC%9E%A5%EC%97%90%EC%84%9C%20%22%2B%22%EC%9D%98%20%EC%9D%98%EB%AF%B8%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20if%20%5B%5B%20%24%7Barray1%5B%24i%5D%2BDEFINED%7D%20%3D%3D%20'%EC%A0%95%EC%9D%98%EB%90%A8'%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