shell编程 函数


函数是一段完成特定功能的代码片段(块)
在shell中定义了函数,就可以使代码模块化,便于复用代码
注意函数必须先定义才可以使用。

一、定义函数的方法

  1. 函数名(){
    函数要实现的功能代码
    }
  2. Function 函数名{
    函数要实现的功能代码
    }

二、 调用函数

函数名
函数名 参数1 参数2

三、 示例

  1. 函数
    编写shell脚本,编写系统工具,编写循环的脚本,功能菜单
    通过shell脚本,编写系统工具箱
    编写循环脚本,

功能菜单:
{ provide these tools:
show disk info(d)
show mem info(m)
show cpu info©
quit(q) }

编写脚本
#!/bin/bash
show_menu() {
cat << EOF
provide these tools:
 show disk info(d)
 show mem info(m)
 show cpu info(c)
 quit(q)
EOF
}

while :
do

show_menu
read -p "Input choice: " choice
        case $choice in
                d)
                        echo "===========disk info=============="
                        df -hT
                        ;;
                m)
                        echo "==========meme info==============="
                        free -m
                        ;;
                c)
                        echo "==========cpu info================="
                        uptime
                        ;;
                q)
                        break
                        ;;
                *)
                        show_menu
                        ;;
        esac
done

  1. 阶乘函数(传参)

什么叫阶乘
12345=120
[root@localhost ~]# let aa=12345;echo $aa
120

编辑脚本
#!/bin/bash
#定义函数名fun1
fun1() {
#定义阶乘元数
factorial=1
#使阶乘循环
for((i=1;i<=5;i++))
do
#阶乘公式
factorial=$[$factorial*$i]
done
#输出阶乘结果
echo “5的阶乘是:$factorial}
fun1
这里的for((i=1;i<=5;i++))等同于for i in ‘seq  5’

I<=5  是阶乘的上限

传参,让函数自动义
编辑脚本
#!/bin/bash
fun1() {
factorial=1
for((i=1;i<=$1;i++))
do
factorial=$[$factorial*$i]
done
echo$1的阶乘是:$factorial}

fun1 $1
fun1 $2
fun1 $3

输出结果:
[root@localhost ~]# bash cc.sh 3 5 10
“3的阶乘是:6”
“5的阶乘是:120”
“10的阶乘是:3628800”

这里i<=$1  参数1是阶乘的上限

bash cc.sh 3 5 10 是脚本的参数
fun1  $1   是函数在调用脚本的参数


函数传参能够在模块化的命令集中,添加自定义部分。参数应加在调用函数的后面。
shell脚本的参数与函数参数不同。是先将SHELL的参数传给函数,函数本身再转换到内部。

shell 的写法和其他运算表达式。

Shell有多重方式进行运算
#!/bin/bash
fun1() {
factorial=1
#for((i=1;i<=$1;i++))
for i in `seq $1`
do
#factorial=$[$factorial*$i]
#let factorial=$factorial*$i
let factorial*=$i
done
echo$1的阶乘是:$factorial}

fun1  $1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值