$ARRAY+=$var가 나에게 적합하지 않은 이유는 무엇입니까?

$ARRAY+=$var가 나에게 적합하지 않은 이유는 무엇입니까?

Bash 배열에 요소를 추가하려고 합니다. 내가 찾고 있어요이것질문하고 그 조언을 따르려고 노력하십시오.

이것은 내 코드입니다.

selected_projects=()
for project_num in ${project_numbers[@]}; do
  selected_project=${projects[$project_num]}
  echo "selected project: $project_num $selected_project"
  $selected_projects+="$selected_project"
done

이렇게 하면 오류가 발생합니다.

88행: +=someProject: 명령을 찾을 수 없습니다.

나는 많은 괄호와 달러 기호를 포함하는 다양한 대안을 시도했지만 내가 뭘 잘못하고 있는지, 무엇을 해야 하는지 알 수 없습니다. 어떤 아이디어가 있나요?

감사해요!

답변1

사용

selected_projects+="$selected_project"

바꾸다

$selected_projects+="$selected_project

$Bash의 변수 할당은 변수 이름 시작 부분에 포함되지 않습니다 .

답변2

selected_projects=()
$selected_projects+="$selected_project"

쉘에서의 변수 할당은 $왼쪽 기호를 사용하지 않으며 변수 값이 확장될 때만 사용됩니다. 여기에는 +=다른 작업이 정확합니다.

또한 배열로 초기화했으므로 selected_projects아마도 그렇게 사용하고 싶을 것입니다. 배열에 값을 추가하려면 추가 할당에 괄호를 사용해야 합니다. 따라서 새 요소가 추가됩니다 selected_projects.

selected_projects+=("$selected_project")

괄호가 없으면 할당은 배열에 대한 색인화되지 않은 참조처럼 작동합니다. 즉, 색인이 있는 요소에 액세스합니다 0. 예를 들어 다음과 같이 인쇄됩니다 foobar foobar.

a=(); a+=foo; a+=bar; echo ${a[0]} $a

관련 정보