码迷,mamicode.com
首页 > 系统相关 > 详细

八使用Shell函数

时间:2018-05-03 11:12:53      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:调用函数   dde   echo   shell脚本   自己   shel   amp   死机   ash   

 

Shell脚本中,将一些需要重复使用的操作,定义为公共的语句块,即可称为函数

 

 

使用函数的好处?

 

使脚本代码更简洁,增强易读性
提高Shell脚本的执行效率

 

 

 

 

 

函数定义方法

 

 

基本格式1

function 函数名 {
   函数的功能体  
}

 

 

格式2

 

 

 

函数名() {
   函数的功能体
}

 

 

 

 

注:定义函数名,不会被输出

 

 

 

使用函数时的规则:

 

先定义后调用;可以只定义不调用
在同一个脚本里,函数名相同时,后定义生效
函数名区分字母大小写
在函数体内定义的变量是局部变量,只能在当前函数内使用
在函数体外定义的变量是全局变量,全局变量所有函数都可以使用
函数之间可以互相调用
定义一次,可多次重用
Bash调用函数时不会开启新的子Shell,会在现有的shell环境中执行该函数

 

 

fun.sh脚本里定义函数sum.two(功能是输出数字10 20 相加的和,并输出计算结果)

 

[root@localhost shell]# cat sum_two.sh
#!/bin/bash
sum_two(){
sum=`expr 10 + 20`
echo "10 +20 = $sum "
}
sum_two

 

 

 

 

在脚本中建一个对2个整数求和的加法器

 

[root@localhost shell]# cat funadder.sh 
#!/bin/bash
adder(){
  echo $(($1+$2))
}
adder 12 34
adder 56 789 

 

 

 

 

 

服务脚本中的函数

 

 

适用于复杂的启动/终止控制操作
方便在需要时多次调用

 

 

 

 

递归调用示例

Shell版的fork炸弹

 

 

 

仅13个字符:.(){.|.& };.
递归死循环,可迅速耗尽系统资源

 

无限的生成新的进程,造成死机

 

 

 

代码解析

 

.()               #定义一个名为.的函数
{                #函数块的开始标记
.|.&           #在后台递归调用函数.
;              #函数块的结束标记
.             #再次调用函数

 

 

 

 

函数可以递归调用(函数自己调用自己)

 

八使用Shell函数

标签:调用函数   dde   echo   shell脚本   自己   shel   amp   死机   ash   

原文地址:https://www.cnblogs.com/zhongguiyao/p/8984273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!