运行Bash脚本时将函数名作为参数传入执行的实现方法
Bash脚本按参数执行指定函数解决方案
这个需求完全可以实现,你可以通过遍历脚本的传入位置参数、匹配执行对应函数的方式完成,修改方案如下:
实现逻辑
- 调整原有函数的输出逻辑,加
-n参数取消echo默认的尾部换行,保证多个函数输出可以拼接在同一行 - 遍历脚本执行时传入的所有参数,逐个校验是否为已定义的函数,避免非法参数报错
- 所有指定函数执行完成后统一输出换行符,优化终端显示体验
- 新增非法参数的错误提示与异常退出逻辑
修改后的完整脚本
#!/bin/bash function hello (){ echo -n "hello," } function world (){ echo -n "world!" } # 遍历所有传入的函数名参数 for target_func in "$@"; do # 校验参数是否为已定义的函数 if type "$target_func" 2>/dev/null | grep -q 'function'; then "$target_func" else echo "错误:不存在的函数 $target_func" >&2 exit 1 fi done # 统一输出换行,避免终端提示符紧跟输出内容 echo
效果验证
- 首先给脚本添加执行权限:
chmod +x test.sh - 执行测试命令:
./test.sh hello world - 输出结果如下:
hello,world!
如果需要单独执行某一个函数,直接传入对应函数名即可,比如执行./test.sh hello会输出hello,。
内容的提问来源于stack exchange,提问作者SimpleNiko
相关产品推荐
相关产品推荐

