
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[@]} 这两种方法,但是我确实取不出来呀,求教! 展开
#!/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[@]} 这两种方法,但是我确实取不出来呀,求教! 展开
4个回答
展开全部
看下你使用的bash版本到没到4.0,使用指令bash --version查看
使用变量前先确认该变量是否在之前已经被定义过了 使用source 命令或 . 命令启动脚本时是不会开辟新线程的所以你在bash窗口里定义的没加local 变量 都会被脚本继承 此时你可以先删除这个变量 即定义phone 时 unset phone
展开全部
你去掉数组声明的话就不能声明是关联数组了
用下面的试下看看
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版本多少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sh -x yourshell
看看问题在哪
看看问题在哪
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询