我有一个bash命令,它从python接收一个关联数组:
string=$(/path/to/my-profiles.py --my-profiles setenv)
echo $string
>>> ( ['SOME_ENV']='1' )
declare -A env=string
for i in "${!env[@]}"
do
echo "key : $i"
echo "value: ${env[$i]}"
done
>>>key : SOME_ENV
value: 1
key : 0
value: array
我没有将键、值0和数组添加到关联数组中。如何避免这种情况?
declare -A env=array
将字符串array
分配给变量env
。所有变量都是索引为零的单元素数组。因为env
是一个数组,所以字符串被分配给索引为0
的元素。
用declare -p env
检查变量值。
如何避免这种情况?
不清楚。要不分配给键0
,请实际为数组分配一个具有某个值的元素。
declare -A env=( [something]=somethingelse )
假设string
变量的内容看起来像:
declare -- string="( [SOME_ENV]=1 )"
OPdeclare -A
语句的一个小改动:
declare -A env="${string}"
这给了我们:
$ typeset -p env
declare -A env=([SOME_ENV]="1" )
$ for i in "${!env[@]}"; do echo "key : $i"; echo "value: ${env[$i]}"; done
key : SOME_ENV
value: 1