如何将函数定义为数组的元素?
我知道我可以这样做:
function array[5](){ echo "you are inside the function"; }
Run Code Online (Sandbox Code Playgroud)
并且它是一个有效的函数,在某种意义上说,指令array[5]正确执行函数.
不幸的是,该功能未列在数组的键中,因此,echo ${!array[*]}不会5作为键返回.
例如,以下代码:
array[0]="first"
function array[5](){ echo "you are inside the function"; }
array[7]="seventh"
echo ${!array[*]}
Run Code Online (Sandbox Code Playgroud)
只返回0 7.
那么,我如何向数组元素添加一个函数,以便我可以循环它?
你无法将函数本身放在数组中.但你可以做的是将函数名称放在该字段中.看:
a_pretty_function() {
echo "you're inside a function";
}
array[5]=a_pretty_function
# Execute it:
"${array[5]}"
Run Code Online (Sandbox Code Playgroud)
当你在做的时候
array[5]() { echo "you are inside the function"; }
Run Code Online (Sandbox Code Playgroud)
你正在定义一个array[5]你可以查看的函数declare -pf array[5].
有了这个机制,你可以做一些非常丑陋的事情:
array[5]() { echo "you are inside the function"; }
i=5
"array[$i]"
Run Code Online (Sandbox Code Playgroud)
这将执行该功能array[5].在任何情况下我都不会推荐这样的做法.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |