在bash中通过索引访问数组项

在bash中通过索引访问数组项,bash,Bash,我有以下代码: 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 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 ipaf
iPhone =>
如何更改代码以使其显示:

iPad => ipadf
iPhone =>  ipaf

提前谢谢


Mike执行此操作的正确方法是:

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

bash 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
projects=(iPad-iPhone)
目标=(ipadf ipaf)
对于((i=0;i<${#项目[@]};i++);做
printf“%s=>%s\n”“${projects[$i]}”“${targets[$i]}”
完成

foo=“bar baz”
创建一个包含
bar baz
内容的字符串。在某些上下文中,字符串可以被分割成序列,因为它们的插值方式(空格分割),但它们不是列表