bash - 将函数存储在 bash 数组元素中

标签 bash

如何将函数定义为数组的元素?

我知道我可以做到:

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/

相关文章:

linux - 如何使用多个正则表达式在 Solaris 中查找文件

bash - 输出并行--pipe到文件

java - 无法从 su - <user> 运行 cmd

linux - Bash shell 'if' 语句比较不同命令的输出

bash - 如何设置我的 Cygwin PATH 以查找 postgresql header 和库路径?

linux .cshrc 文件编译错误

mysql - 用于大量使用 wordpress 博客的简单脚本解决方案(shell、perl、其他)?

&& 的 Linux 陷阱最佳实践

从 CGI 调用重新启动脚本未完全重新启动

linux - Shell命令是用什么语言写的?