shell->一个经典的shell脚本结构

  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 "\t"$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
# 

posted on 2019-12-27 15:15  LiveWithACat  阅读(269)  评论(0编辑  收藏  举报