八使用Shell函数
在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 + `
echo "10 +20 = $sum "
}
sum_two
在脚本中建一个对2个整数求和的加法器
[root@localhost shell]# cat funadder.sh
#!/bin/bash
adder(){
echo $(($+$))
}
adder
adder
服务脚本中的函数
适用于复杂的启动/终止控制操作
方便在需要时多次调用
递归调用示例
Shell版的fork炸弹
仅13个字符:.(){.|.& };.
递归死循环,可迅速耗尽系统资源
无限的生成新的进程,造成死机
代码解析
.() #定义一个名为.的函数
{ #函数块的开始标记
.|.& #在后台递归调用函数.
; #函数块的结束标记
. #再次调用函数
函数可以递归调用(函数自己调用自己)
用function函数 +case分支结构 给源码apache写启动脚本,
apache指定安装目录/usr/local/httpd2,脚本名叫apached.sh
答:
写完脚本把apached.sh的权限改成x执行权限并拷贝到系统存储启动服务的目录/etc/init.d下并去掉后缀.sh 。
然后把/etc/init.d/apached脚本加入到chkconfig的开启自启动服务中。
1.进入到系统存储运行的目录



八使用Shell函数的更多相关文章
- Shell入门教程:Shell函数详解
Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...
- Shell入门教程:Shell函数的返回值
shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...
- (转)Shell函数
Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1. 函数 ...
- Linux Shell系列教程之(十五) Shell函数简介
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...
- Shell函数的简单应用
Shell函数的简单应用 在脚本内给函数传参: #!/bin/bash . /etc/init.d/functions CheckUrl (){ curl -I -s $ | head - } Che ...
- Shell函数语法
Shell函数语法 定义函数: function 函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名 参数一 参数二 return在函数里面使用会跳出函数并 ...
- shell 函数
1 shell函数的定义及其调用 shell函数有两种格式: function name { commands } name() { commands } 其中,name为函数名,commands为函 ...
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- Shell函数返回值、删除函数、在终端调用函数
Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...
随机推荐
- JVM探秘:内存溢出
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 在 Java 虚拟机内存区域中,除了程序计数器外,其他几个内存区域都可能会发生OutO ...
- StrategyPattern(策略模式)-----Java/.Net
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 ...
- 你确定你了解什么是linux系统?
1.什么是linux发行版 就Linux的本质来说,它只是操作系统的核心,负责控制硬件.管理文件系统.程序进程等,并不给用户提供各种工具和应用软件.所谓工欲善其事,被必先利其器,一套在优秀的操作系统核 ...
- 梳理js数组去重中代码比较简洁的方案
一.es6 Set去重 function removal(arr) { return Array.from(new Set(arr)) } let arr=[1,2,1,3,4,5,5] remova ...
- swiper如何禁止左右箭头切换
swiper做项目时,需求 带着左右两边的箭头, 场景1:swiper自动切换,此时左右箭头点击时不能切换 场景2:swiper手动切换,左右箭头可以实现切换,通过翻阅api 终于找到 <s ...
- shell学习-常用语句
为什么使用shell 可以快速.简单的完成编程,实现自己的想法.Shell非常适合编写小的工具,因为小工具更强调的是易于配置.维护.移植等,而不是执行效率. 当自己的想法确实有必要进行优化,有必要让它 ...
- Spring Cloud(二):Web服务客户端之Ribbon
上文介绍了服务如何通过Eureka实现注册,以及如何从Eureka获取已经注册的服务列表.那么拿到注册服务列表后, 如何进行服务调用?一个简单的实现是可以从被调用服务的实例列表中选择一个服务实例,通过 ...
- Java配置文件读取中文乱码问题
背景 这是我之前在做的用友服务对接开发,昨天领导拿给财务测试时告诉我有乱码,当时我第一想法是用友那边的编码格式有问题,因为还在做其他任务,我说等问一下用友他们用的什么编码格式我们这边改一下,然后今天早 ...
- Qt Installer Framework翻译(3-4)
更新组件 下图说明了用于更新已安装组件的默认工作流程: 本节使用在macOS上运行的Qt 5维护工具为例,来演示用户如何更新已安装组件. 启动更新程序 用户启动维护工具时,将打开"简介&qu ...
- 「 从0到1学习微服务SpringCloud 」09 补充篇-maven父子模块项目
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...