linux – 获取shell脚本中的函数名列表

前端之家收集整理的这篇文章主要介绍了linux – 获取shell脚本中的函数名列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How do I list the functions defined in my shell?6个
我有一个Bourne Shell脚本,其中包含多个函数,并允许以下列方式调用

my.sh< func_name> <参数1> < param2的>

将使用param1和param2调用func_name()内部.

我想创建一个“帮助”功能,只列出所有可用的功能,即使没有参数.

问题:如何从脚本内部获取脚本中所有函数名称的列表?

我想避免解析它并寻找功能模式.太容易出错了.

谢谢,
亚历克斯

更新:代码.想要我的help()函数就像main() – 添加代码中的函数自动添加到帮助中.

  1. #!/bin/sh
  2.  
  3. # must work with "set -e"
  4.  
  5. foo ()
  6. {
  7. echo foo: -$1-$2-$3-
  8. return 0
  9. }
  10.  
  11. # only runs if there are parameters
  12. # exits
  13. main ()
  14. {
  15. local cmd="$1"
  16. shift
  17. local rc=0
  18. $cmd "$@" || rc=$?
  19. exit $rc
  20. }
  21.  
  22. if [[ "$*" ]]
  23. then
  24. main "$@"
  25. die "how did we get here?"
  26. fi

解决方法

您可以在自己的脚本上使用grep命令获取脚本中的函数列表.为了使这种方法起作用,您需要以某种方式构造函数,以便grep可以找到它们.这是一个示例:
  1. $cat my.sh
  2. #!/bin/sh
  3.  
  4. function func1() # Short description
  5. {
  6. echo func1 parameters: $1 $2
  7. }
  8.  
  9. function func2() # Short description
  10. {
  11. echo func2 parameters: $1 $2
  12. }
  13.  
  14. function help() # Show a list of functions
  15. {
  16. grep "^function" $0
  17. }
  18.  
  19. if [ "_$1" = "_" ]; then
  20. help
  21. else
  22. "$@"
  23. fi

这是一个互动演示:

  1. $my.sh
  2. function func1() # Short description
  3. function func2() # Short description
  4. function help() # Show a list of functions
  5.  
  6.  
  7. $my.sh help
  8. function func1() # Short description
  9. function func2() # Short description
  10. function help() # Show a list of functions
  11.  
  12.  
  13. $my.sh func1 a b
  14. func1 parameters: a b
  15.  
  16. $my.sh func2 x y
  17. func2 parameters: x y

如果你有“私人”功能,你不想在帮助中显示,那么省略“功能”部分:

  1. my_private_function()
  2. {
  3. # Do something
  4. }

猜你在找的Linux相关文章