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                    #输出结果


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部