如何将函数定义为数组的元素?
我知道我可以做到:
function array[5](){ echo "you are inside the function"; }
从某种意义上说,它是一个有效函数,指令 array[5]
正确执行了该函数。
不幸的是,该函数未列在数组的键中,因此,echo ${!array[*]}
不会返回 5
作为键。
例如下面的代码:
array[0]="first"
function array[5](){ echo "you are inside the function"; }
array[7]="seventh"
echo ${!array[*]}
只返回 0 7
。
那么,如何向数组元素添加一个函数,以便循环遍历它?
最佳答案
您不能真正将函数本身放入数组中。但是您可以做的是将函数名称放在该字段中。看:
a_pretty_function() {
echo "you're inside a function";
}
array[5]=a_pretty_function
# Execute it:
"${array[5]}"
当你在做的时候
array[5]() { echo "you are inside the function"; }
您正在定义一个名为 array[5]
的函数,您可以使用 declare -pf array[5]
进行检查。
使用这个机制你可以做一些非常丑陋的事情:
array[5]() { echo "you are inside the function"; }
i=5
"array[$i]"
这将执行函数 array[5]
。无论如何,我都不推荐这种做法。
关于bash - 将函数存储在 bash 数组元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26869887/