1、shell函数
1.1、shell函数定义
对于重复出现的代码,在shell中可以定义函数,然后在指定的地方调用即可。便于代码复用,提高开发效率。
定义函数的语法如下:
function 函数名(){
语句块
返回值
}
示例:
function hello(){
echo "Hello"
}
2、调用函数
通过函数名称来调用已定义的函数
function_name
两个数相加的函数与定义:
#定义函数add
function add(){
a=
b=
val=`expr ${a} + ${b}`
echo "${a} + ${b} is :${val}" }
#调用函数
add
输出:
+ is :
1.3、带参数的函数
上面的add函数a,b的值已写死,可用性太差。下面传入参数来重写add函数
#定义函数add
function add(){
#$1表示第一个参数
#$2表示第二个参数
#$n表示第n个参数
a=$
b=$
val=`expr ${a} + ${b}`
echo "${a} + ${b} is :${val}" }
#调用函数
add
add
输出:
+ is :
+ is :
1.4、函数返回值
#函数返回值不是必须的,与一般语言的返回值含义不同
#语法 return status_code,表示函数的退出状态
#退出状态是个数字,一般成功为0,失败为1
#$? 用来获取上一个命令的退出状态或返回值。
#调用函数
add
echo "add func exit code is : $?"
输出:
add func exit code is :
假如把add函数执行成功的退出状态定义为200,重写add函数并判断是否执行成功
示例:
#定义函数add
function add(){
#定义成功状态码
ok_code=
err_code=
a=$
b=$
val=`expr ${a} + ${b}`
if [ $? -eq ]
then
return ${ok_code}
else
return ${err_code}
fi }
#调用函数
add e
if [ $? -eq ]
then
echo "add func run sucess."
else
echo "add func run fail."
fi
输出:
expr: 非整数参数
add func run fail.
1.5、如果获取函数的处理结果
a、使用全局变量
#定义函数add
function add(){
#定义成功状态码
ok_code=
err_code=
a=$
b=$
val=`expr ${a} + ${b}`
if [ $? -eq ]
then
return ${ok_code}
else
return ${err_code}
fi }
#调用函数
add
echo "add 1 2 result is : ${val}"
输出:
add result is :
b、在函数内部echo 出变量,在函数外部用$(func_name arg1 argn)捕捉
#定义函数add
function add(){
a=$
b=$
val=`expr ${a} + ${b}`
echo ${val}
}
#使用$(add )捕捉结果
echo "add 1 2 result is : $(add 1 2)"
输出:
add result is :
推荐使用第二种
1.6、break和continue
break用于退出循环,退出后循环不再执行。
cotinue用于退出本次循环,继续执行下一次循环。
break示例:
#寻找1~10之间第一个偶数
#找到后即跳出循环,不再继续
for i in `seq `
do
tmp=`expr ${i} % `
if [ ${tmp} -eq ];then
echo $i
#continue
break
fi
done
break输出:
continue示例:
#寻找1~10之间所有的偶数
for i in `seq `
do
tmp=`expr ${i} % `
if [ ${tmp} -eq ];then
echo $i
continue
#下面这句echo永远不会被执行
echo "statement after cotinue"
fi
done
cotinue输出: