gpt4 book ai didi

bash - 从 Bash 函数返回字典

转载 作者:行者123 更新时间:2023-12-02 21:10:07 26 4
gpt4 key购买 nike

我想在 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替换为echo。不过,您不能轻易返回一个结构,但您可以尝试返回一个声明它的字符串(见下文)。

不需要在函数中使用localunsetdeclare 在函数内部创建一个局部变量,除非 -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

关于bash - 从 Bash 函数返回字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33975967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com