17 shell脚本--008函数

vim 中多行注释:

  :进入视图模式,

  .,$s/^/#/

练习:

 

#!/bin/bash
#

start1(){
        if [ -e /var/lock/subsys/testd_name ];then
                echo "服务已启动"
        else
                touch /var/lock/subsys/testd_name
                echo "服务启动成功"
        fi
}

stop1(){
        if [  -e /var/lock/subsys/testd_name ];then
                rm -f /var/lock/subsys/testd_name
        ;;
                echo "服务关闭成功"
        else
                echo "服务已经关闭"
        fi
}

status1(){
        if [ -e /var/lock/subsys/testd_name ];then
                echo "文件存在"
        else
                "文件不存在"
        fi
}

ugage1(){
        echo "Usage:please input {start|stop|restart|status}"
}


case $1 in 
start)
        start1()
        ;;
stop)
        stop1()
        ;;
restart)
        restart1()
        ;;
status)
        status1()
        ;;
*)
        ugage1()
        ;;
esac

 

 

1、函数介绍function
为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能。
且,这个功能在后面的代码中,会重复调用;

def

2、函数的语法格式
函数的写法格式:
function check_cpu {
cat /proc/cpuinfo
}
ls /etc/
check_cpu 【不调用函数,则函数体中的命令是不会执行的;在哪里调用,函数体中的命令就在那里执行】

*fun_name() {
函数体
$1 $2 ... $10
}
fun_name 1 2 3
:wq
function.sh 4 5 6 7 8 9 10 11 12 13 14

3、函数的调用 -- return
函数返回值
1、当函数中指定了判断语句的时候,我们默认要返回一个错误的结果,但是最近一条命令确实正确的,这时候,我们需要通过return返回一个我们需要的错误状态码;
2、函数结束的时候,我们需要指定一个return的正确返回码;
如果使用在循环语句中,return会跳出循环;

4、函数接受参数
函数 变量
和普通的命令一样
只需要注意,在函数接受参数的时候,不会使用外部的传参,而是以脚本内部的参数为准,

5、函数中的变量
本地变量
local 变量名=xxx
本地变量只在本函数内部生效
局部变量
脚本内部的变量
环境变量
在整个Linux系统的bash中生效

TEST() {
local i=9
let i++
echo i
exit 0
}
i=1
TEST
echo i

扩展: 关于脚本执行的问题:
bash 的方式来执行 -- #!/bin/bash
bash所执行的脚本中定义的变量,在当前shell的子shell中;
全路径或者相对路径的方式来执行; -- 须有授权执行权限;
source 脚本文件 或者 . 脚本文件
source这种方式来执行脚本的时候,内部变量所定义的值是在当前shell中的;

6、函数递归
你 站在镜子前,后面又有一面镜子

n的阶乘
n! = n(n-1)!
$[$1* $[ fac -1]]

fact(){
if [ $1 -lt 1 ];then
echo 1 //一定要写成1
else
i=$[$1*$(fact $[$1-1])] // n(n-1)
echo $i
fi
}

(n-1) = (n-1)(n-2)!
。。。
2!=2*1!

fac(){
$[fac -1 ]
}
fac 5


兔子数列,斐波那契数列
1 + 1 = 2
1+ 1 + 1 = 3
2 + 1 + 2 = 5
3 + 5 = 8
= n
1 1 2 3 5 8 13 21 34 ... n

$[$(fab $[$1-1])+$(fab $[$1-2])]

Fn = F(n-1) + F(n-2)

#!/bin/bash
#
fab(){
if [ $1 -eq 1 ];then
echo 1
elif [ $1 -eq 2 ];then
echo 1
else
echo $[$(fab $[$1-1])+$(fab $[$1-2])]
fi
}
fab 7

转载于:https://www.cnblogs.com/wx00/p/11376123.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值