for 루프에서 2개의 개별 배열에 2개의 변수를 사용하는 방법은 무엇입니까?

for 루프에서 2개의 개별 배열에 2개의 변수를 사용하는 방법은 무엇입니까?

당신의 도움을 주셔서 감사합니다. 2개의 배열을 쿼리하기 위해 Ubuntu 시스템에서 for 루프를 실행하고 있습니다.

for ((prod in "${Prod_elements[@]}";sProd in "${Prod_elements_stripped[@]}"))

위에 나열된 배열은 파일이 아닌 bash에서 실행될 때 생성됩니다.

Prod_elements=("a/A" "b/B" "c/C" "d/D" )
Prod_elements_stripped=("a-A" "b-B" "c-C" "d-D")

그 다음에

do echo "$prod" " " "$sProd"
done

그래서

완전한 Prod_elements=("a/A" "b/B" "c/C" "d/D" ) Prod_elements_stripped=("aA" "bB" "cC" "dD")

for ((prod in "${Prod_elements[@]}";sProd in "${Prod_elements_stripped[@]}"))
do 
echo "$prod" " " "$sProd"
done

필요한 산술 오류 exp를 제공합니다. 어떻게 해야 하나요? 감사해요

답변1

올바르게 수행하려는 작업을 추측하면 두 개의 인덱스 배열 대신 단일 연관 배열을 사용할 수 있습니다.

declare -A prod=( ["a/A"]="a-A" ["b/B"]="b-B" ["c/C"]="c-C" ["d/D"]="d-D" )
for key in "${!prod[@]}"; do
  printf "Key '%s' corresponds to value '%s'\n" "$key" "${prod[$key]}"
done

만약 너라면~ 해야 하다고려 중인 접근 방식을 사용하면 인덱스를 반복하여 수행할 수 있습니다.

Prod_elements=("a/A" "b/B" "c/C" "d/D" )
Prod_elements_stripped=("a-A" "b-B" "c-C" "d-D")

for ((i=0; i<${#Prod_elements[@]}; i++)); do
  printf '%s %s => %s\n' "$i" "${Prod_elements[$i]}" "${Prod_elements_stripped[$i]}"
done

관련 정보