一.Shell函数
- 将命令序列按格式写在一起
- 可方便重复使用命令序列
- Shell函数定义格式:
方式一:
function 函数名 {
命令序列
}
方式二:
函数名(){
命令序列
}
函数返回值:
return表示退出函数并返回一个返回值,脚本中可以用$?变量显示该值使用原则:
1、函数一结束就取返回值,因为s?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余
当然也有办法可以直接输出return值,哪怕超过256 也可以输出出来
对于输出值进一步操作赋值:
二.函数传参
三.函数变量的作用范围
函数变量的作用范围:
函数在shell脚本中仅在当前shell环境中有效shell脚本中
变量默认全局有效
将变量限定在函数内部使用local命令
#!/bin/bash
jichao (){
local a
a=8
echo $a
}
a=9
jichao
echo $a
四.递归
- 函数调用自己本身的函数
- 阶乘
函数调用自己本身的函数
五.递归目录
function list_files () {
for f in 'ls $1'
do
if [-d "$1/$f" ] ;then
echo "$2$f" #如果是目录就输出这个目录,$2为空格是用于区分父子目录
list_files "$1/$f" " $2"
else
echo "$2$f" #不是目录则输出$f结果
fi
done
}
list_files "/var/log" ""
六.创建库
在脚本里面写多个函数,用于别的脚本来调用,库不需要给权限和运行
#!/bin/bash
jiafa(){
echo $[$1 + $2]
}
jianf(){
echo $[$1 - $2]
}
chengfa(){
echo $[$1 * $2]
}
写一个新的脚本44.sh 用来调用 加法运算 调用方法 : . my.sh
#!/bin/bash
. my.sh
a=10
b=5
c=`jiafa $a $b`
echo "加法的结果为:$c"
调用结果
[root@promote boot]# ./44.sh
加法的结果为:15