shell脚本的函数
目录
一、函数的定义
1、函数的作用
2、函数的格式
3、函数的调用
4、函数的返回值
二、函数实例
1、阶乘
2、传参
3、递归
4、函数库
一、函数的定义
1、函数的作用
(1)语句块定义函数相当于别名。
(2)封装的可重复利用的具有特定功能的代码
2、函数的格式
(1)方法一
function 函数名(){
命令
}
(2)方法二
函数名(){
命令}
3、函数的调用
name(){ #定义函数echo "good" #函数命令
}xingbie(){echo "man"
}name #输出函数
xingbie


4、函数的返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值
函数返回值的使用规则
(1)函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码;
(2)退出状态码必须是0~255,超出时值将为除以256取余。
#!/bin/bashj(){ #定义函数read -p "请输入一个数:" i #给i赋值if [ $i -ge 1 ];then #如果赋的值大于等于1时执行操作echo $[$i + 1] #输出fi
}result=`j` # 获取函数结果
echo $result #最后进行输出

二、函数实例
1、阶乘
fact() {
if [ $1 -eq 1 ] 当$1不等于1时进入else
thenecho 1
elselocal t=$[$1 - 1] local r=$(fact $t) 到这一步r=$(fact $t)再次调用函数fact,fact这时为$t
echo $[$1 * $r]
fi
}read -p "请输入:" n 定义一个值result=$(fact $n) 进入函数算出值echo $result

2、传参
#!/bin/bash
chuan(){f=$[$1+$2] #shell脚本内的参数再传递给函数内参数echo $f
}chuan $1 $2 外部命令行输入的位置传递给shell脚本内的参数
3、递归
#!/bin/bash
list() {for fd in $(ls $1) doif [ -d "$1/$fd" ];then echo "$2$fd 是目录" #如果是目录就输出这个目录 list "$1/$fd" " $2"elseecho "$2$fd 是文件" 不是目录则输出$fdfidone
}####main#####
list "/var/log" ""

4、函数库
在一个脚本当中建立多个函数,用于别的脚本来调用该库中的函数
[root@localhost ~]# vim myfan.s #建立函数库#!/bin/bash #编写阶乘函数库
fact() {
if [ $1 -eq 1 ]
thenecho 1
elselocal t=$[$1 - 1]local r=$(fact $t)
echo $[$1 * $r]
fi
}[root@localhost ~]# vim 4.sh #编写调用函数库脚本#!/bin/bash
. myfan.sh # 调用函数库read -p "请输入:" n #定义参数result=$(fact $n) #输出函数echo $result #输出结果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

