Bash关联数组包含未在其中定义的元素



我有一个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

最新更新