Shell函数详解(函数定义、函数调用)
Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。
Shell 中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。
Shell 函数定义的语法格式如下:
function name() {
statements
[return value]
}
对各个部分的说明:
function
是 Shell 中的关键字,专门用来定义函数;name
是函数名;statements
是函数要执行的代码,也就是一组语句;return value
表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。
由{ }
包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。
函数定义的简化写法
如果你嫌麻烦,函数定义时也可以不写 function 关键字:
name() {
statements
[return value]
}
如果写了 function 关键字,也可以省略函数名后面的小括号:
function name {
statements
[return value]
}
我建议使用标准的写法,这样能够做到“见名知意”,一看就懂。
函数调用
调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:
name
如果传递参数,那么多个参数之间以空格分隔:
name param1 param2 param3
不管是哪种形式,函数名字后面都不需要带括号。
和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数。
Shell 也不限制定义和调用的顺序,你可以将定义放在调用的前面,也可以反过来,将定义放在调用的后面。
实例演示
1) 定义一个函数,输出 Shell 教程的地址:
- #!/bin/bash
- #函数定义
- function url(){
- echo "http://c.biancheng.net/shell/"
- }
- #函数调用
- url
运行结果:
http://c.biancheng.net/shell/
你可以将调用放在定义的前面,也就是写成下面的形式:
- #!/bin/bash
- #函数调用
- url
- #函数定义
- function url(){
- echo "http://c.biancheng.net/shell/"
- }
2) 定义一个函数,计算所有参数的和:
- #!/bin/bash
- function getsum(){
- local sum=0
- for n in $@
- do
- ((sum+=n))
- done
- return $sum
- }
- getsum 10 20 55 15 #调用函数并传递参数
- echo $?
运行结果:
100
$@
表示函数的所有参数,$?
表示函数的退出状态(返回值)。
Shell函数详解(函数定义、函数调用)相关推荐
- 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- fread函数详解 函数原型
函数原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream ) b ...
- 【蓝牙sbc协议】sbc源码阅读笔记(四)——sbc_encode函数详解
sbc_encode函数详解 函数定义: // sbc.c SBC_EXPORT ssize_t sbc_encode(sbc_t *sbc, const void *input, size_t in ...
- C库函数之 strtol函数详解
strtol函数详解 函数声明 base为0的情况 endptr的妙用 函数声明 long int strtol (const char* str, char** endptr, int base); ...
- shell脚本——shell函数详解
shell脚本--shell函数详解 一.shell函数 1.shell函数的概念 2.shell函数的格式 (1)函数的定义 (2)调用函数的方法 3.函数返回值 4.函数传参 5.函数变量的作用范 ...
- makefile详解 函数 foreach if call origin shell
makefile详解 函数 foreach if call origin shell 控制make函数 四.foreach 函数 foreach函数和别的函数非常的不一样.因为这个函数是用来做循 ...
- linux 系统函数调用脚本文件,Linux系统调用fsync函数详解
Linux系统调用fsync函数详解 发布时间:2013-11-14 19:55:10 作者:佚名 我要评论 Linux fsync函数主要用于将同步内存中所有已修改的文件数据到储存设备,多用 ...
- python中plt定义,对Python中plt的画图函数详解
1.plt.legend plt.legend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应 ...
- linux下wait函数,Linux wait函数详解
wait和waitpid出现的原因 SIGCHLD --当子进程退出的时候,内核会向父进程SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) --子进程退出时,内核将 ...
- 函数指针与回调函数详解
函数指针与回调函数详解 1.什么是函数指针? 函数(的)指针就是指针.这个指针存放一个函数的地址,而函数的名称就该函数的入口,即地址.这类似于数组名就是数组的首地址.我们可以通过反汇编直观的查看到函数 ...
最新文章
- Dockerfile指令详解:WORKDIR 指定工作目录
- Matlab中画图以及plot函数及legend函数详解
- Qt-qwidget项目入门实例
- 20165235 Java第一周学习总结
- apache camel_使用WildFly 8在Java EE7中自举Apache Camel
- 7-2 多项式求和 (10 分)
- OpenWrt 学习网址
- camera(17)---设置摄像头方向、打开线程与预览线程、设置参数、Camera外设按键、自动对焦与触摸对焦、拍照、人脸检测、位置管理、旋转管理、变焦、录像
- [HNOI2015]开店
- 云计算解码:技术架构和产业运营
- Android studio 下载SDK
- word 转换pdf 插件
- linux中ldd命令查看二进制文件(程序或库)所依赖的其他库(LIBTIFF_4.0未定义的引用问题)
- ZigBee协议栈(一)--协议栈介绍
- Symbian OS 源码下载方式
- oracle 逗号连接表是相当于什么
- html多个背景音乐自动播放,多个背景音乐同时自动播放?
- linux内核page结构体的PG_referenced和PG_active标志
- 微信公众号开发相关问题
- 【 SAP消息号BS013】
热门文章
- linux只提取前两个目录名,Linux技巧:介绍从目录路径获取文件名和目录前缀的方法...
- php公用一个尾部,19.2 共用显示部分 - 19.2.2 共用尾部页面 - 《零基础学PHP+MySQL (零基础学编程)》 - D云...
- linux php ldap扩展,php_ldap域集成模块安装-159
- oracle快速导出1t数据,使用sqluldr2快速高效大批量导出Oracle数据
- html video标签问题,用HTML5 video标签的一系列问题
- 北京工业大学计算机科学与技术研究生,北京工业大学研究生专业介绍:计算机科学与技术...
- php6 配置,thinkphp6路由可选参数配置
- mysql怎么导出所有的表名称_MYSQL导出表名(navicat 导出表名称)
- Mybatis Plus 是如何实现动态 SQL 语句的?原理你懂吗?
- 还在用Jenkins?看看这些替代方案,是否更适合你!