跟我一起写Shell脚本之十四---函数

1、定义

当有多条语句会被重复使用时,我们可以考虑封装成一个函数。函数的语法有如下两种:

函数名(){
    xxx
}

 或者

function 函数名(){
    xxx
}

2、简单例子 

我们写个简单的函数的例子027_function1.sh:

function myfunc(){
        echo "my function" "$1"
}

myfunc aa
myfunc bb
myfunc cc

 执行结果(用bash可以,但是用sh会报错):

 $ bash 027_function1.sh 
my function aa
my function bb
my function cc

如果不用function关键字的话,sh执行就不会错。

#!/bin/bash

myfunc(){
        echo "my function" "$1"
}

myfunc aa
myfunc bb
myfunc cc

执行结果:

$ sh 028_function2.sh 
my function aa
my function bb
my function cc

3、复杂例子

我们写个复杂点的例子,实现如下功能:将某个目录下所有的文件列出来

#!/bin/bash

module_name=$0

doOutputFileName(){
        for path in $(ls "$1")
        do
                if [ -d "$1/$path" ]; then
                        doOutputFileName "$1/$path"
                fi

                if [ -f "$1/$path" ]; then
                        #if [ "$module_name" != "$path" ]; then
                                echo $path
                        #fi
                fi
        done
}

mypath=$1
if [ "x$mypath"=="x" ]; then
        mypath=$(pwd)
fi

doOutputFileName $mypath

 执行结果如下:

001_helloworld.sh
002_comment.sh
003_comment.sh
004_comment.sh
005_var.sh
006_readonlyvar.sh
007_specialvar.sh
008_specialvar.sh
009_envvar.sh
010_envvar.sh
011_declare.sh
012_if.sh
013_if.sh
014_if.sh
015_case.sh
016_while.sh
017_until.sh
018_for_char1.sh
019_for_char2.sh
020_for_char3.sh
021_for_char4.sh
022_for_dig1.sh
023_for_dig2.sh
024_for_dig3.sh
025_for_file1.sh
026_for_file2.sh
027_function1.sh
028_function2.sh
029_function3.sh
1.txt
2.txt
33.txt
44.txt
55.txt
66.txt
77.txt

其中1.txt、2.txt、33.txt、44.txt、55.txt、66.txt、77.txt是我特地建立了各级目录的内容。

 

好了,今天的部分就到这里了,接下来的Shell脚本之旅会更久精彩!

===================================================================================

注意:本文为本人原创,版权所属为个人所有,欢迎转载,但是转载请注明出处。

===================================================================================

Guess you like

Origin blog.csdn.net/sjwangjinbao/article/details/116172717