Shell / Bash 本身是没有提供这个功能的,需要我们模拟实现
#!/bin/bash # 重载一个函数 say_hi_anny() { echo "Hi, I'm anny, I love coding!" } say_hi() { local name=$1 echo "Hi, I'm $name!" } main() { local name=$1 # 关键是使用 type -t 来检查函数是否存在 # type -t 名字:名字必须是命令/函数名,变量名不算 if [[ "$(type -t "say_hi_$name")" == function ]]; then "say_hi_$name" else say_hi "$name" fi } main "anny" main "bob" main "charlie"