在bash函数中定义一个本地数组,并在该函数之外访问它

戴夫

我试图在bash函数中定义一个本地数组,并在该函数之外访问它。

我意识到BASH函数不会返回值,但是我可以将计算结果分配给全局值。我希望这段代码可以将array []的内容回显到屏幕上。我不确定为什么会失败。

function returnarray
{
local array=(foo doo coo)
#echo "inside ${array[@]}"
}


targetvalue=$(returnarray)
echo ${targetvalue[@]}
gniourf_gniourf

您有两个选择。第一个是@choroba规定的内容,它可能是最好和最简单的:不要在本地定义数组。

returnarray() {
    array=(foo doo coo) # NOT local
}

# call your function
returnarray
# now the array is in array and you may copy it for later use as follows:
targetvalue=( "${array[@]}" )
# print it to check:
declare -p targetvalue

这是整洁,简单,安全的,完全避免了使用子外壳程序(因此效率更高)。不过,它有一个警告:它不适用于稀疏数组(但这应该是次要的细节)。还有另一个小缺点:需要复制数组。


另一种选择是将变量名传递给函数,然后让函数直接生成数组。这使用了namerefs,并且仅在Bash 4.3之后可用(但这确实很好,如果可以的话,请使用它!):

generatearray() {
    # $1 is array name in which array is generated
    local -n array="$1" || return 1
    array=( foo doo coo )
}
# call function that constructs the array with the array name
generatearray targetvalue
# display it
declare -p targetvalue

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在事件上填充数组并在事件函数处理程序之外访问它

来自分类Dev

如何在JavaScript中的函数之外访问数组

来自分类Dev

无论如何要更改函数中全局变量的值并在js中的本地范围之外访问

来自分类Dev

如何在Scala中定义函数,该函数返回一个函数,该函数本身返回一个函数

来自分类Dev

如何使用React js中的上下文将函数从FUNCTIONAL传递给CLASS组件,并在render(无需prop)之外访问它?

来自分类Dev

Javascript总是在最长的数组上运行一个函数,并在该函数中使用最短的数组

来自分类Dev

修复一个递归函数,该函数采用包含其他数组的元素的数组。它产生一个没有其他数组作为元素的数组

来自分类Dev

尝试使用一个函数来包含一个数组,该函数要求数组中的文件

来自分类Dev

如何访问一个函数在另一个函数中定义和声明的数组?

来自分类Dev

JS变量范围:在一个函数中放入一个数组,然后在另一个函数中访问它

来自分类Dev

在定义它之前在Swift中声明一个函数

来自分类Dev

为什么当我在一个函数中定义变量时,却无法在另一个函数中访问它

来自分类Dev

如何在一个函数中创建setTimeOut并在另一个函数中销毁它?

来自分类Dev

如何定义一个回调函数并在以后触发它?

来自分类Dev

在给定函数之外访问变量

来自分类Dev

Rust-如何从一个函数返回多个变量,以便在调用该函数的作用域之外可以访问它们?

来自分类Dev

在Vim中定义一个函数,该函数只能使用一次(不编辑.vimrc)

来自分类Dev

如何键入一个函数,该函数返回对象中存在于属性中的数组中的单个元素

来自分类Dev

实现一个C函数,该函数在给定字符上拆分字符串,并在拆分后返回字符串数组(以及数组长度)

来自分类Dev

从另一个函数中调用python中的函数(为该函数的变量创建一个数组)

来自分类Dev

PHP分配日期函数并在类问题之外访问类属性

来自分类Dev

定义一个名为food的函数,该函数接收两个参数

来自分类Dev

如何创建一个函数,该函数生成一个空向量,然后使用for循环的结果填充它?

来自分类Dev

通过JavaScript函数调用ap:remoteCommand,该函数通过“ oncomplete”处理函数将该函数本地的消息传递给另一个函数

来自分类Dev

在函数中创建数组,并在另一个函数中使用它

来自分类Dev

是否可以调用JavaScript中另一个函数中本地定义的函数?

来自分类Dev

定义一个函数,该函数为各种字符串python调用另一个函数

来自分类Dev

如何在一个函数中设置全局变量并使另一个函数访问它?

来自分类Dev

当从另一个函数中调用该函数时,如何抑制该函数中的代码行?

Related 相关文章

  1. 1

    在事件上填充数组并在事件函数处理程序之外访问它

  2. 2

    如何在JavaScript中的函数之外访问数组

  3. 3

    无论如何要更改函数中全局变量的值并在js中的本地范围之外访问

  4. 4

    如何在Scala中定义函数,该函数返回一个函数,该函数本身返回一个函数

  5. 5

    如何使用React js中的上下文将函数从FUNCTIONAL传递给CLASS组件,并在render(无需prop)之外访问它?

  6. 6

    Javascript总是在最长的数组上运行一个函数,并在该函数中使用最短的数组

  7. 7

    修复一个递归函数,该函数采用包含其他数组的元素的数组。它产生一个没有其他数组作为元素的数组

  8. 8

    尝试使用一个函数来包含一个数组,该函数要求数组中的文件

  9. 9

    如何访问一个函数在另一个函数中定义和声明的数组?

  10. 10

    JS变量范围:在一个函数中放入一个数组,然后在另一个函数中访问它

  11. 11

    在定义它之前在Swift中声明一个函数

  12. 12

    为什么当我在一个函数中定义变量时,却无法在另一个函数中访问它

  13. 13

    如何在一个函数中创建setTimeOut并在另一个函数中销毁它?

  14. 14

    如何定义一个回调函数并在以后触发它?

  15. 15

    在给定函数之外访问变量

  16. 16

    Rust-如何从一个函数返回多个变量,以便在调用该函数的作用域之外可以访问它们?

  17. 17

    在Vim中定义一个函数,该函数只能使用一次(不编辑.vimrc)

  18. 18

    如何键入一个函数,该函数返回对象中存在于属性中的数组中的单个元素

  19. 19

    实现一个C函数,该函数在给定字符上拆分字符串,并在拆分后返回字符串数组(以及数组长度)

  20. 20

    从另一个函数中调用python中的函数(为该函数的变量创建一个数组)

  21. 21

    PHP分配日期函数并在类问题之外访问类属性

  22. 22

    定义一个名为food的函数,该函数接收两个参数

  23. 23

    如何创建一个函数,该函数生成一个空向量,然后使用for循环的结果填充它?

  24. 24

    通过JavaScript函数调用ap:remoteCommand,该函数通过“ oncomplete”处理函数将该函数本地的消息传递给另一个函数

  25. 25

    在函数中创建数组,并在另一个函数中使用它

  26. 26

    是否可以调用JavaScript中另一个函数中本地定义的函数?

  27. 27

    定义一个函数,该函数为各种字符串python调用另一个函数

  28. 28

    如何在一个函数中设置全局变量并使另一个函数访问它?

  29. 29

    当从另一个函数中调用该函数时,如何抑制该函数中的代码行?

热门标签

归档