我想在 bash 中有一个函数,它创建一个字典作为局部变量。用一个元素填充字典,然后返回该字典作为输出。
下面的代码正确吗?
function Dictionary_Builder ()
{
local The_Dictionary
unset The_Dictionary
declare -A The_Dictionary
The_Dictionary+=(["A_Key"]="A_Word")
return $The_Dictionary
}
如何访问上述函数的输出?我可以在 bash 中使用以下命令吗?
The_Output_Dictionary=Dictionary_Builder()
要捕获命令或函数的输出,请使用命令替换:
The_Output_Dictionary=$(Dictionary_Builder)
并输出要返回的值,即替换return
with echo
。不过,您不能轻易返回一个结构,但您可以尝试返回一个声明它的字符串(见下文)。
没有必要使用local
and unset
在函数中。declare
除非另有说明,否则在函数内创建局部变量-g
。新创建的变量始终为空。
给空变量添加单个元素,可以直接赋值,不行+
需要:
The_Dictionary=([A_Key]=A_Word)
换句话说
#!/bin/bash
Dictionary_Builder () {
declare -A The_Dictionary=([A_Key]=A_Word)
echo "([${!The_Dictionary[@]}]=${The_Dictionary[@]})"
}
declare -A The_Output_Dictionary="$(Dictionary_Builder)"
echo key: ${!The_Output_Dictionary[@]}
echo value: ${The_Output_Dictionary[@]}
对于多个键和值,您需要遍历字典:
Dictionary_Builder () {
declare -A The_Dictionary=([A_Key]=A_Word
[Second]=Third)
echo '('
for key in "${!The_Dictionary[@]}" ; do
echo "[$key]=${The_Dictionary[$key]}"
done
echo ')'
}
declare -A The_Output_Dictionary="$(Dictionary_Builder)"
for key in "${!The_Output_Dictionary[@]}" ; do
echo key: $key, value: ${The_Output_Dictionary[$key]}
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)