1. 基本的脚本函数
1.1 函数的定义
function name {
commands
}
或者
name() {
commands
}
1.2 简单示例
#!/bin/sh
function Func01 {
echo "This is function of Func01"
}
Func02() {
echo "This is function of Func02"
}
Func01
Func02
运行结果:
1.3 函数返回值与退出码
#!/bin/sh
function Func01 {
echo "This is function of Func01"
}
Func02() {
echo "This is function of Func02"
}
Func03(){
echo "This is function of Func02"
#自定义退出码,退出码需限制在0-255之间
return 10
}
Func01
#输出函数运行的退出码,0表示成功
echo "$?"
#运行一个未定义的函数,观察退出码
Func04
echo "$?"
#观察函数自定义的退出码
Func03
echo "$?"
运行结果:
2. 函数中变量使用
2.1 函数中变量参数处理
#!/bin/sh
sum(){
if [ $# -eq 2 ]
then
sum=$[ $1+$2 ]
echo $sum
else
echo "please input 2 args"
return 1
fi
}
value=`sum $1 $2`
if [ $? -eq 0 ]
then
echo $value
else
echo "Err $value"
fi
运行结果:
2.2 函数中使用数组参数
#!/bin/sh
#定义一个数组
numberArray=(1 2 3 4 5 6 7 8 9 10)
#定义一个求和函数
sum(){
result=0
for var in $@
do
result=$[ $result+$var]
done
echo $result
}
#输出数组的长度
echo "输出数组的长度: ${#numberArray[@]}"
#输出数组中指定的值
echo "输出数组中指定的值:${numberArray[2]}"
#修改数组指定的值
numberArray[2]=4
echo "修改数组指定项后的值:${numberArray[2]}"
#调用函数,使用数组变量
echo "调用函数,使用数组变量: `sum ${numberArray[*]}`"
运行结果:
2.3 通过local关键字定义函数中的局部变量
#!/bin/sh
#定义一个数组
numberArray=(1 2 3 4 5 6 7 8 9 10)
#定义一个求和函数
sum(){
#未定义局部变量的情况
result=0
for var in $@
do
result=$[ $result+$var ]
done
echo $result
}
echo "未定义局部变量的情况"
sum ${numberArray[*]}
echo "$result"
sum(){
#使用local关键字将result变量定义为局部变量
local result=0
for var in $@
do
result=$[ $result+$var]
done
echo $result
}
echo "使用了local关键字定义局部变量的情况"
sum ${numberArray[*]}
echo "$result"
运行结果:
3. 引用函数库
3.1 通过source filepath命令在脚本中引用其他其他脚本的函数库, source filepath也可简写为“. filepath”的形式
3.2 简单示例,编写两个shell脚本,在newshell.sh脚本中引用shellscript的函数,e.g: