如何从zsh函数返回关联数组?
我尝试过:
我尝试过:
creatAARR() {
declare -A AARR=([k1]=2 [k2]=4)
return $AARR
}
creatAARR
但是我遇到了错误:
creatAARR:return:2: too many arguments
什么是正确的方法?
编辑: 我按照 @chepner 的建议将输出捕获到标准输出中,但新变量似乎并不像关联数组一样运行:
creatAARR() {
declare -A AARR=([k1]=2 [k2]=4)
echo "$AARR"
}
declare -A VALL
NEW_ARR=$(creatAARR)
echo "$NEW_ARR" # 2 4
echo "k1: $NEW_ARR[k1]" # prints just k1:
return
有什么建议吗?
$(...)
来捕获。 - chepnerecho "$NEW_ARR"
不会写入数组值(在 shell 中不存在这样的东西;数组语法基本上是一种使用类似名称的多个变量的方式);它只会写入存储在数组中的值。您可能可以执行类似declare -p AARR
,然后x=$(creatAARR); declare -A "NEW_ARR=$x"
的操作,但您真的正在尝试在 shell 中使用非常不像 shell 的代码。 - chepner