函数
shell函数:
定义:
1、将命令序列按照格式写到一起。格式指的是函数的固定格式。两种格式。
for i in {}
do
命令序列
done
**作用:**1、方便重复使用。函数库,集中在一起随时可以穿参调用
2、大工程分割为若干个小的功能模块,提高代码的可读性
函数的格式
function 命名 {
命令序列
}
命名(){
命令序列
return
}
return 的作用:只能写在函数内部,目的是从函数的内部获得返回值,用来判断是否继续执行下一个脚本。
return 之后 echo $? 不在判断函数的执行结果,只是一个函数内部的返回值,在使用return传返回码的时候,默认0是成功,非0都是失败
$?的返回码可以自定义但是范围在0-255
function aaa {
read -p "输入一个数字:" num
if [ $num -eq $num ] &> /dev/null
then
a=$(($num*2))
return 0
else
echo "输入错误"
return 1
fi
}
aaa #调用函数
if [ $? -eq 0 ]
then
echo "ok"
else
exit
fi
#作用范围
abc () {
local a=5
local b=6
c=10
}
a=8
b=9
c=11
abc
echo $a
echo $b
echo $c
#在函数内部定义的全部变量,外部不能改变内部的全局变量
#加local之后,就是函数内部的变量,而不是全局变量,外部赋值会替换内部的变量值
#阶乘 4的阶乘
jiecheng () {
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$(($1-1))
local reult=$(jiecheng $temp)
echo $[$1 * $reult]
fi
}
read -p "请输入一个整数:" num
result=$(jiecheng $num)
#定义一个结果
echo "$num 的阶乘:$result"
#递归目录
function mulu {
for f in $( ls $1 )
do
if [ -d "$1/$f" ]
then
echo "$2$f"
# 不查看目录
mulu "$1/$f" " $2 "
else
echo " $2$f"
fi
done
}
mulu "/etc/" " "
作业:
1、既能支持小数也能支持整数运算? 函数库hanshuku diaoyong
#函数库,函数库只包含定义的函数,由另外的一个脚本传入参数来调用我们定义的函数。
vim hanshuku.sh
#jiafa () {
# echo " $1 + $2 " | bc
#}
jiafa_xiaoshu () {
echo " scale=2 ; $1 + $2 " | bc
}
jianfa_xiaoshu () {
echo " scale=2 ; $1 - $2 " | bc
}
chengfa_xiaoshu () {
echo " scale=2; $1 * $2 " | bc
}
chufa_xiaoshu () {
if [ $2 == 0 ];then
echo "除数不能为0!"
else
echo " scale=2; $1 / $2 " | bc
fi
}
vim diaoyong.sh
. /opt/hanshu/hanshuku.sh
read -p "输入第一个数:" num1
read -p "输入第二个数:" num2
sum=`jiafa_xiaoshu $num1 $num2`
jf=`jianfa_xiaoshu $num1 $num2`
cf=`chengfa_xiaoshu $num1 $num2`
chufa=`chufa_xiaoshu $num1 $num2`
echo "加法结果:$sum"
echo "减法结果:$jf"
echo "乘法结果:$cf"
echo "除法结果:$chufa"
2、#上午我们递归文件的代码,实现了递归出所有目录下的文件
#所有文件,把后缀名是.txt的分件复制到/opt/dec当中。
function mulu {
for f in $( ls $1 )
do
if [ -d "$1/$f" ]
then
echo "$2$f"
# 不查看目录
mulu "$1/$f" " $2 "
else
echo " $2$f"
case $f in
*.txt)
cp "$1/$f" /opt/dec
;;
# *)
esac
fi
done
}
mulu "/opt" " "
[root@test3 hanshu]# sh muludigui.sh
[root@test3 hanshu]# ll /opt/dec/
总用量 4
-rw-r--r--. 1 root root 8 6月 18 14:47 users.txt