自定义函数

shell脚本中可以自定义函数,函数定义语法如下:

[ function ] functionname [()]
{
actions
[return n]

}

说明:
1、可以带function fun() 定义,也可以直接fun() 定义,括号内不带任何参数,如果你嫌麻烦,函数定义时也可以不写 function 关键字,但这时必须要写小括号,如果写了 function 关键字,也可以省略函数名后面的小括号;
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值, return后跟数值n(0-255);
3、函数调用的时候可以传位置参数,位置参数用空格间隔;
4、如果{与命令写在同一行,则需要空一格再写命令,同时如果命令与}同在一行,需要在之间加分号分隔;
5、定义函数函数体不能为空,否则执行会报错。
6、查看定义过的函数:declare -f [函数名]
7、shell中的函数体内还可以定义函数,但外部函数被调用时才会定义并调用他的内部函数。如果内部函数的调用先与外部函数的调用,则此时会报错,因为此时内部函数还未被定义,只有先执行了当外部函数的调用,此时内部函数才被定义了,此后就可以在任何位置调用内部函数了。
8、函数也可以像普通的shell脚本一样接受位置参数。
9、在函数体定义变量时,变量默认是全局的,即在函数体外部也可以访问这个变量,使用local关键字进行声明变量为局部变量,这样的变量就只能在函数体内使用了。局部变量声明:local var_name=”value”

演示示例:
function sum()
{
return expr $1 + $2
}

函数的调用

1、函数要先定义,才能调用,函数调用格式:直接写函数名即可调用,不需要加括号,如:name;
2、调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:name;
3、如果传递参数,那么多个参数之间以空格分隔:name param1 param2 param3;
4、不管是哪种形式,函数名字后面都不需要带括号;
5、和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数;
6、Shell 也不限制定义和调用的顺序,你可以将定义放在调用的前面,也可以反过来,将定义放在调用的后面。

演示示例:
[root@Centos8 shell_scripy]# cat function.sh
#!/bin/bash
function sum ()
{
echo expr $1 + $2
}
sum 34 60

[root@Centos8 shell_scripy]# ./function.sh
94

function 自定义函数、函数调用相关推荐

  1. 自定义_Excel中的自定义函数(自定义函数的基础内容)

    各位朋友,你们好. 最近和网友沟通交流Excel问题,好些问题都没法直接实现,因此用了很多自定义函数,也给头条里的朋友写过几个自定义函数(比如颜色计算的函数.提取不重复内容的函数.汉字转拼音的函数-- ...

  2. Hive 自定义函数UDF入门

    1.为什么要用自定义函数 1.1 hive的内置函数满足不了的业务需求,这时候就需要使用自定义函数 1.2 hive的自定义函数有那些 1.UDF  一对一输出输入(本章使用) 2.UDTF 一对多输 ...

  3. QLExpress 系列入门教程-03-QLExpress 自定义函数,宏定义,拓展操作符

    目录 目录 自定义函数 拓展操作符 替换关键字 Operator 宏定义 导航 自定义函数 脚本中定义function /*** 自定义函数测试* @throws Exception if any*/ ...

  4. EXCEL自定义函数无法运行的原因:可以在VBA里运行的函数,在EXCEL用自定义函数为什么报错?

    目录 1目标问题: 为什么VBA里,function可以运行的代码,在EXCEL用自定义函数,会返回错误值? 2 先说结论 2.1 最容易发生的原因 2.2 其他原因梳理 3  自定义函数返回值的情况 ...

  5. matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...

    点击查看matlab中,怎么样用function自定义函数调用另一个函数名为输入?具体信息 答:test定义两个参数,一个是函数,一个是函数的变量. function [z]=test11(funna ...

  6. 【SQL编程】Greenplum 实现树结构+自定义函数+避免函数重复调用+ function cannot execute on a QE slice 问题处理(优化过程全记录)

    1.需求说明 这是一个关于POI的应用,数据从水经微图下载而来,需要处理的是街道层级的数据,但是最终的POI信息要有省.市.县数据,所有需要用到行政区划表来补全数据. 2.编程实例 2.1 实现树结构 ...

  7. php 模板 自定义函数调用,thinkphp模板中使用自定义函数

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### ...

  8. MySQL自定义函数(CREATE FUNCTION)

    在使用 MySQL 的过程中,MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数. 自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由 SQL 语句和 ...

  9. 数据库系列之mysql 自定义函数function,函数和存储过程的区别

    mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 https://blo ...

  10. mysql 自定义函数function,函数和存储过程的区别

    From: https://blog.csdn.net/u010365819/article/details/80470448 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相应的要 ...

最新文章

  1. Python 测试开发从入门到高手成长之路
  2. pycharm 更改字体和界面样式
  3. ASP.NET中常用的js代码
  4. 怎么学JavaScript?
  5. 十四、Java练习:一个猜数游戏
  6. 验证码广告:站长增加收入新渠道
  7. php分页实例下载,PHP文件操作实例总结【文件上传、下载、分页】
  8. CutJS – 用于 HTML5 游戏开发的 2D 渲染引擎
  9. linux spinlock/rwlock/seqlock原理剖析(基于ARM64)
  10. PHP正则匹配到2个字符串之间的内容,匹配HTML便签内容
  11. 2015春计算机应用技术基础,计算机应用技术基础.doc
  12. 在DataGridView中的列头添加复选框
  13. java底层模型_Java I/O模型及其底层原理,夯实你的开发基础
  14. UVa 1252 (状压DP + 记忆化搜索) Twenty Questions
  15. android 音量调节流程分析,Android 4.4 音量调节流程分析(二)
  16. C语言图书出入库管理系统
  17. 【数据技术】利用Python获取高德地图POI数据——以上海瑞幸门店为例
  18. 南昌航空大学961数据结构真题答案
  19. 完美黑苹果clover EFI BigSur11.2 神舟K580c i5 BCM94360HMB WIFI蓝牙二合一网卡
  20. 远期、期货和互换(一)

热门文章

  1. 使用bs4+re正则来爬取网页上需要的数据
  2. android mvp模式到底好,Android中MVP设计模式
  3. Day0205____数据库
  4. Apex 中插入更新数据的事件执行顺序
  5. hbase 实战项目
  6. Git(4):远程仓库
  7. 精通JavaScript--06设计模式:结构型
  8. 模拟Post登陆带验证码的网站
  9. 简单版WAF代码学习
  10. (转) Lua使用心得一