1.
Shell 函数
1、将命令序列按格式写在一起
2、可方便重复使用命令序列
使用函数可以避免代码重复
使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强
PS:看一个人编的脚本多不多规不规范熟不熟练,就看他编写的脚本有没有大量用函数,
如果脚本里全是代码没有函数就知道这个人一定是个小白。
二、Shell 函数定义
方式一:
function 函数名 {
命令序列
}
方式二:
函数名 () {
命令序列
}
两个整数相加之和实验一
实验二
函数变量的作用范围
函数在shell脚本中仅在当前shell环境中有效
shell脚本中的变量默认全局有效
将变量限定在函数内部使用local命令
[root@gcc jiaoben1]#vim test5.sh
#!/bin/bash
abc () {
a=5
b=6
return $a $b #在函数内部定义了全局变量,外部的赋值不能改变全局变量
}
a=8
b=12
c=9
abc
echo "a等于$a"
echo "b等于$b"
echo "c等于$c"
#!/bin/bash
abc () {
local a=5 #用了local就是函数内部的变量,外部重新赋值会替换这个变量
local b=6
return $a $b
}
实验三
函数库
函数库只包含函数的定义,脚本中既包含函数的定义也包括可执行的代码。
[root@gcc jiaoben1]#vim test8.sh
#!/bin/bash
jiafa () {
result=$[$1 + $2]
echo $result
}
jianfa () {
result=$[$1 - $2]
echo $result
}
chengfa () {
result=$[$1 * $2]
echo $result
}
chufa () {
if [ $2 -ne 0 ]
then
result=$[$1 / $2]
echo $result
else
echo "$2不能等于0!"
fi
}
----------------------------------------------------------------------------
[root@gcc jiaoben1]#vim test9.sh
#!/bin/bash
. /opt/jiaoben1/test8.sh
read -p "输入第一个参数值:" first
read -p "输入第二个参数值:" second
result1=`jiafa $first $second`
result2=`jianfa $first $second`
result3=$(chengfa $first $second)
result4=$(chufa $first $second)
echo $result1
echo $result2
echo $result3
echo $result4
--------------------------------------------------------
[root@gcc jiaoben1]#chmod +x test9.sh
[root@gcc jiaoben1]#./test9.sh
输入第一个参数值:20
输入第二个参数值:10
30
10
200
2