函数是一段完成特定功能的代码片段(块)
在shell中定义了函数,就可以使代码模块化,便于复用代码
注意函数必须先定义才可以使用。
一、定义函数的方法
- 函数名(){
函数要实现的功能代码
} - Function 函数名{
函数要实现的功能代码
}
二、 调用函数
函数名
函数名 参数1 参数2
三、 示例
- 函数
编写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
- 阶乘函数(传参)
什么叫阶乘
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