我有以下代码
func1(){
#some function thing
function2(){
#second function thing
}
}
Run Code Online (Sandbox Code Playgroud)
我想打电话function2但是我收到了一个错误function2 : not found
有解决方案吗?
我想要实现的是在函数内创建一个本地函数.同时,本地函数不会覆盖外部函数.下面是一个简单函数和带有参数的嵌套函数的示例,用于说明我的问题.
#!/bin/bash
usage() #<------------------------------- same function name
{
echo "Overall Usage"
}
function_A()
{
usage() #<--------------------------- same function name
{
echo "function_A Usage"
}
for i in "$@"; do
case $i in
--help)
usage
shift
;;
*)
echo "flag provided but not defined: ${i%%=*}"
echo "See '$0 --help'."
exit 0
;;
esac
done
}
function_A --help
usage
Run Code Online (Sandbox Code Playgroud)
这是输出.
function_A Usage
function_A Usage
Run Code Online (Sandbox Code Playgroud)
但我想要的是
function_A Usage
Overall Usage
Run Code Online (Sandbox Code Playgroud)
是否可以在不改变其(功能)名称和顺序的情况下实现?请?
注意:我尝试了local usage()但似乎不适用于功能.
该脚本演示了如何使用带括号的括号对话来定义bash函数.括号具有在函数"local"中创建环境变量的良好效果,我想因为函数体作为子shell执行.输出是:
A=something
A=
B=something
B=something
Run Code Online (Sandbox Code Playgroud)
问题是这是否允许定义函数的语法.
#!/bin/bash
foo() (
export A=something
echo A=$A
)
bar() {
export B=something
echo B=$B
}
foo
echo A=$A
bar
echo B=$B
Run Code Online (Sandbox Code Playgroud)