首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash中按索引访问数组项

在bash中按索引访问数组项
EN

Stack Overflow用户
提问于 2011-09-08 00:16:45
回答 2查看 170关注 0票数 1

我有以下代码:

代码语言:javascript
复制
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

这将显示以下行:

代码语言:javascript
复制
iPad => ipadf ipaf
iPhone =>

如何更改代码以使其显示:

代码语言:javascript
复制
iPad => ipadf
iPhone =>  ipaf

???

提前感谢

麦克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-08 00:26:23

正确的方法是:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2011-09-08 01:14:08

bash 4具有关联数组,因此您可以这样写:

代码语言:javascript
复制
declare -A targets=([iPad]=ipadf [iPhone]=ipaf)
for project_type in "${!targets[@]}"; do
  printf "%s => %s\n" "$project_type" "${targets[$project_type]}"
done

否则,声明两个数组,如ennuikiller的答案所示,但我将直接迭代索引

代码语言:javascript
复制
projects=(iPad iPhone)
targets=(ipadf ipaf)
for (( i=0; i < ${#projects[@]}; i++ )); do
  printf "%s => %s\n" "${projects[$i]}" "${targets[$i]}"
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7337178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档