假设我编写了一个 bash 函数,如下所示:
函数.sh
usage () {echo "No arguments are needed";}
myfunction () {
if [[ $# -qt 0 ]] ;
then
usage
fi
echo "Hello World"
}
然后我source function.sh
。但是,我也在usage()
那里定义了另一个脚本,并且我也已经找到了它。
我跑myfunction -myWorld
了,我打了usage()
电话,它以某种方式调用了正确的电话。
bash 如何知道usage()
调用哪个?
就目前而言,您的问题的答案是 Bash 调用了该函数的最后定义版本。
使用您的示例的两个修改版本:
function1.sh
function2.sh
然后运行
将给出输出
请注意,在您的脚本中:
-qt
应该是-gt
, 和;usage()
- 周围缺少一些空格echo
我不想剥夺我上面的海报作为正确答案,因为他直接回答了我的问题。
但是,我确实想发布后续内容。
我没有获取函数,而是将 function.sh 所在的目录添加到 PATH 并将文件重命名为 myfunction。在文件 myfunction 的最后一行是
myfunction $@
.