2011-09-07 5 views
1

에 인덱스 배열 항목에 액세스 나는 다음과 같은 코드가 있습니다bash는

iPad => ipadf ipaf 
iPhone => 

내가 코드를 변경할 수있는 방법이 표시되도록 :

PROJECT_TYPES="iPad iPhone" 
ANT_TARGET_NAMES="ipadf ipaf" 

INDEX=0 

for PROJECT_TYPE in $PROJECT_TYPES; do 

echo "${PROJECT_TYPE} => ${ANT_TARGET_NAMES[$INDEX]}" 

let "INDEX++" 
done 

이 다음 줄이 표시를

iPad => ipadf 
iPhone => ipaf 

??? 사전에

덕분에

마이크

+1

'foo = "bar baz"'는 내용이'bar baz' 인 문자열을 생성합니다. 특정 상황에서 문자열은 보간되는 방식 (공백 분할) 때문에 시퀀스로 나눌 수 있지만 목록이 아닙니다. – Daenyth

답변

2

이 작업을 수행하는 올바른 방법입니다 : 당신이 쓸 수 있도록

INDEX=0 
PROJECT_TYPES=(iPad iPhone) 
ANT_TARGET_NAMES=(ipadf ipaf) 

for PROJECT_TYPE in ${PROJECT_TYPES[*]} 
do 
echo "${PROJECT_TYPE} => ${ANT_TARGET_NAMES[$INDEX]}" 
let "INDEX++" 
done 
1

배쉬 (4)는 연관 배열이 있습니다

declare -A targets=([iPad]=ipadf [iPhone]=ipaf) 
for project_type in "${!targets[@]}"; do 
    printf "%s => %s\n" "$project_type" "${targets[$project_type]}" 
done 

을 그렇지 않으면, ennuikiller의 답변 에서처럼 두 개의 배열을 선언하지만 인덱스를 직접 반복합니다.

projects=(iPad iPhone) 
targets=(ipadf ipaf) 
for ((i=0; i < ${#projects[@]}; i++)); do 
    printf "%s => %s\n" "${projects[$i]}" "${targets[$i]}" 
done 
+0

고마워,하지만 난 배쉬 3 여기있어. – Mike

관련 문제