shell脚本中,无法获取“关联数组”(字典)的key,尝试过很多方法,输出都不对,求教

shell脚本如下:#!/bin/bashdeclare-Aphonephone=(["key1"]=135["key2"]=136["key3"]=158)echo${... shell脚本如下:
#!/bin/bash
declare -A phone
phone=(["key1"]=135 ["key2"]=136 ["key3"]=158)

echo ${!phone[*]}
echo ${!phone[@]}
#########################
运行结果如下:
~ ./shell.sh
./shell.sh: line 2: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
0
0
去掉数组声明运行结果如下:
0
0

求教各位,网上几乎所有例子都是${!phone[*]}或者${!phone[@]} 这两种方法,但是我确实取不出来呀,求教!
展开
 我来答
kinger呵呵
2022-01-25
知道答主
回答量:3
采纳率:0%
帮助的人:1593
展开全部
  1. 看下你使用的bash版本到没到4.0,使用指令bash --version查看

  2. 使用变量前先确认该变量是否在之前已经被定义过了 使用source 命令或  . 命令启动脚本时是不会开辟新线程的所以你在bash窗口里定义的没加local 变量 都会被脚本继承 此时你可以先删除这个变量 即定义phone 时 unset phone

yyiinn1
2018-07-05 · TA获得超过157个赞
知道小有建树答主
回答量:241
采纳率:64%
帮助的人:91.2万
展开全部

你去掉数组声明的话就不能声明是关联数组了

用下面的试下看看

declare -A phone1
phone1=(["key1"]=135 ["key2"]=136 ["key3"]=158)
echo "${phone1[key1]}"
# 如果报 -bash: declare: phone: cannot convert indexed to associative array 就换个变量名
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-05-20
展开全部
关联数组,是bash 4.0新增的特性,你的shell版本多少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
良玉小帝
2018-05-07 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
sh -x yourshell
看看问题在哪
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式