shell脚本类常用的条件分支判断是if,case。但是也可以用其他的方式来实现,如下脚本文件名字为mfc。其中每一个独立的函数都是一个分支,函数上的注释即是该函数的说明信息。
1 #!/bin/sh 2 3 # fun1: note: the first test function 4 # fun1: usage1: mfc fun1 5 fun1() 6 { 7 echo "inner function" 8 } 9 10 # fun2: note: the second test function 11 # fun2: usage1: mfc fun2 arg1 arg2 12 fun2() 13 { 14 echo "function: $1 $2 $3 $4" 15 } 16 17 _debug_() 18 { 19 echo "inner function" 20 } 21 22 # help: Give 'mfc help <function>' for more details. 23 help () 24 { 25 [ -z "$2" ] && { 26 echo "Usage: mfc <function> [args1...n]" 27 echo "Available functions:-" 28 cat $0 | grep () | cut -d'(' -f1 |grep -v "_*_" | awk '{ print " "$1 }' 29 echo "Give 'mfc help <function>' for more details." 30 } || { 31 cat $0 | grep -w $2: | cut -d':' -f2- 32 } 33 } 34 35 [ -n "$1" ] && { 36 name="$1" 37 shift 38 $name $name $@ || >&- 39 } || help
执行效果如下:
# ./mfc Usage: mfc <function> [args1...n] Available functions:- fun1 fun2 help Give 'mfc help <function>' for more details. # ./mfc help Usage: mfc <function> [args1...n] Available functions:- fun1 fun2 help Give 'mfc help <function>' for more details. # ./mfc help fun1 note: the first test function usage1: mfc fun1 # ./mfc help fun2 note: the second test function usage1: mfc fun2 arg1 arg2 # ./mfc fun1 inner function # ./mfc fun2 param1 param2 param3 function: fun2 param1 param2 param3 #