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