【问题标题】:Bash: Send associative array to the function [duplicate]Bash:将关联数组发送到函数[重复]
【发布时间】:2012-06-12 00:58:22
【问题描述】:

可能重复:
How to pass an associative array as argument to a function in Bash?

我声明了我的哈希数组:

declare -A some_array

我声明我的功能:

some_function() {
  ..
}

如何将数组作为参数发送给函数以便访问它?

我知道我可以将它用作全局变量,但是当我有很多哈希数组想要与某个函数一起使用时,这不是出路。

如果没有办法,如何分配给其他的一个哈希数组值?

【问题讨论】:

    标签: bash hashtable


    【解决方案1】:

    将其作为全局变量访问(只需在函数中按名称引用它)。 Bash 中没有传递数组。有一些笨拙的技术试图做到这一点,但我建议避免混乱。

    其他选项包括使用 Python 或 Perl 等支持传递数组、哈希或其引用的语言编写整个脚本。

    在 Bash 4.3 或更高版本中,您可以使用 name references,但有 caveats

    【讨论】:

    • 这似乎不起作用。更改可能在函数内可见,但在函数外会丢失。
    • @user1167662:你在函数内部声明了数组吗?这使它成为函数的本地化。如果你在外面声明它,那么它就是全局的。
    • 我在函数内外都试过了。我也试过declare -gA var_name,据我所知应该使变量具有全局范围,但这也没有成功。
    • @user1167662:这个 sn-p 像宣传的那样工作:declare -A arr; my_func () { arr['customer']=$1; }; my_func Bob; printf '%s\n' "${arr['customer']}"; declare -p arr。那对你有用吗?什么版本的 Bash?如果这不起作用或没有提供关于在代码中查找什么的线索,那么我建议您提出一个新问题并显示您尝试过的代码以及结果是什么以及预期的结果是什么。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2012-03-16
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多