run-6ren">
gpt4 book ai didi

bash - bash 上的嵌套函数

转载 作者:行者123 更新时间:2023-11-29 09:21:22 25 4
gpt4 key购买 nike

我有一个函数期望接收另一个要执行的函数

  a(){
function=$1
echo "common log! $function"
$function --> run the function
}

我想要的是将该函数参数作为嵌套函数传递到我的函数中

   b(){
a f(){ echo "nested function b" }
echo "since I´m doing more things here"
}

c(){
a f(){ echo "nested function c" }
echo "since I´m doing more things here"
}

但是嵌套函数 f 似乎不能在 bash 上完成

关于如何完成这个有什么建议吗?

最佳答案

您可以使用子 shell 函数来嵌套函数 - 使用圆括号而不是大括号:

#!/bin/bash

a() {
echo "hello a"
}

# Note the (
b() (
echo "hello b"
a() {
echo "inner a"
}

a
)

a
b
a

给予:

hello a
hello b
inner a
hello a

不能做的是将内部函数传递到别处,因为内部函数只存在于子外壳中。 Bash 没有对函数的引用,只有全局名称。

如果您想编写类似闭包的代码,请使用像 Python 这样的语言。

关于bash - bash 上的嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com