实现本地功能 [英] Achieve Local Function
本文介绍了实现本地功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要尝试实现的目标是在函数中创建本地函数。同时,本地函数不会覆盖外部函数。下面是简单函数和带参数的嵌套函数的示例,以说明我的问题。
#!/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
这篇关于实现本地功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文