gpt4 book ai didi

bash - 实现本地功能

转载 作者:行者123 更新时间:2023-11-29 08:47:40 25 4
gpt4 key购买 nike

我想尝试实现的是在一个函数中创建一个局部函数。同时,局部函数不会覆盖外部函数。下面是一个简单函数和一个带有参数的嵌套函数的示例来说明我的问题。

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

这是输出。

function_A Usage
function_A Usage

但我想要的是

function_A Usage
Overall Usage

是否可以在不改变它们(功能)名称和顺序的情况下实现?请问?

注意:我尝试了local usage(),但它似乎不适用于函数。

最佳答案

Bash 不支持本地函数,但根据您的特定脚本和体系结构,您可以通过子 shell 控制函数名称的范围。

通过将定义中的 {..} 替换为 (..),您将获得所需的输出。 usage 的新定义将仅限于功能,但例如对变量的任何更改:

#!/bin/bash
usage()
{
echo "Overall Usage"
}

function_A()
( # <-- Use subshell
usage()
{
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

关于bash - 实现本地功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34985408/

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