相关疑难解决方法(0)

如何在Bash中的另一个函数内定义一个函数?

我有以下代码

func1(){
    #some function thing
    function2(){
        #second function thing
    }
}
Run Code Online (Sandbox Code Playgroud)

我想打电话function2但是我收到了一个错误function2 : not found

有解决方案吗?

bash

53
推荐指数
4
解决办法
3万
查看次数

实现本地功能

我想要实现的是在函数内创建一个本地函数.同时,本地函数不会覆盖外部函数.下面是一个简单函数和带有参数的嵌套函数的示例,用于说明我的问题.

#!/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 shell sh

14
推荐指数
2
解决办法
2602
查看次数

使用括号而不是大括号定义bash函数体

该脚本演示了如何使用带括号的括号对话来定义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)

bash bash-function

9
推荐指数
2
解决办法
2876
查看次数

标签 统计

bash ×3

bash-function ×1

sh ×1

shell ×1