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脚本之旅会更久精彩!
===================================================================================
注意:本文为本人原创,版权所属为个人所有,欢迎转载,但是转载请注明出处。
===================================================================================