1 自定义函数
函数就是对一个小功能的封装,每个计算机语言都提供自定义函数的功能,便于对代码的重复利用;
1.1 自定义的方式
shell中函数式包含“重复”命令的合集; 定义函数的方式如下:
function funName(){
#body
}
函数的执行方式是:
funName
这里我们对判断当前是文件还是文件夹的函数做一个封装:
function testLs(){
for fileName in `ls`
do
if [ -f ${fileName} ]; then
echo "文件名是:$fileName"
else
echo "文件夹是:$fileName"
fi
done
}
函数调用:
testLs
1.2 函数中的参数和变量的左右范围
为了防止函数内的变量对函数外有影响,可以添加local
限制变量的作用范围在函数内;
# 声明函数内有效
local fileName;
函数参数:使用$1
、$2
、$n
的方式获取;改造上面的函数,
function testLs(){
for fileName in `ls $1`
do
if [ -f ${fileName} ]; then
echo "文件名是:$fileName"
else
echo "文件夹是:$fileName"
fi
done
}
函数内通过$1
获取函数传入的参数;调用的时候使用方式是:
testLs /home/
也就是函数名后跟参数,多个参数使用空格分开;
2 系统函数库
系统提供了一些函数库可以在shell脚本中使用,位置在/etc/init.d/functions
,
系统内部建立的库提供了例如:checkpid()
,status()
自建的函数库,在自己的脚本中通过source函数脚本导入函数;
例如:我们要使用checkpid,我们修改脚本如下:
source /etc/init.d/functions
#检查一号进程是否存在
pid=1
if checkpid $pid ;then
echo 找到pid
else
echo 未找到pid
fi