函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

一、格式

shell中函数的定义格式如下:

[ function ] funname [()] { action; [return int;] }

说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255

二、函数调用

下面的例子定义了一个函数并进行调用:

#!/bin/bash demoFun(){ echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" demoFun echo "-----函数执行完毕-----"

输出结果:

-----函数开始执行-----
这是我的第一个 shell 函数! -----函数执行完毕-----

下面定义一个带有return语句的函数:

#!/bin/bash funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "输入的两个数字之和为 $? !"

输出类似下面:

这个函数会对输入的两个数字进行相加运算...
输入第一个数字:
1 输入第二个数字: 2 两个数字分别为 1 和 2 ! 输入的两个数字之和为 3 !

函数返回值在调用该函数后通过 $? 来获得。

注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。


三、函数参数

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

带参数的函数示例:

#!/bin/bash funWithParam(){ echo "第一个参数为 $1 !" echo "第二个参数为 $2 !" echo "第十个参数为 $10 !" echo "第十个参数为 ${10} !" echo "第十一个参数为 ${11} !" echo "参数总数有 $# 个!" echo "作为一个字符串输出所有参数 $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73

输出结果:

第一个参数为 1 ! 第二个参数为 2 ! 第十个参数为 10 ! 第十个参数为 34 ! 第十一个参数为 73 ! 参数总数有 11 个! 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

另外,还有几个特殊字符用来处理参数:

参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

转载于:https://www.cnblogs.com/xiaoaofengyue/p/8086279.html

Shell(四)函数相关推荐

  1. Linux的shell脚本函数教程

    Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...

  2. linux 信号传递函数,Linux Shell之七 函数应用

    函数是什么? 函数是一些命令的集合,使用一个名称做代表,称为函数名称.函数名称的命名规则和变量相同. 一旦函数定义好了,执行这个名称,就好象执行Bash的命令一样,称为调用函数.实际上,Bash调用函 ...

  3. Shell脚本函数(函数传参、递归、创建库)

    Shell脚本函数 一.Shell函数 1.Shell函数定义 2.函数的返回值 return echo 二.函数传参 三.函数变量的作用范围 四.递归 1.阶乘 2.递归目录 五.创建库 一.She ...

  4. Shell Curses 函数库

    用于 Shell 脚本的终端函数 "Shell Curses"是一个脚本函数库,这些函数为 Shell 程序员提供了将基于文本的光标移动到屏幕上指定位置的能力.这种能力允许使用 S ...

  5. 史上最高效Shell四剑客实操案例

    01.Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合 ...

  6. Shell之函数及流程控制语序

    Shell之函数及流程控制语序 脚本中的函数 作用: 把一个复杂的语句块定义成一个字符串的方法 把一个脚本写成一个变量,用变量去调动程序 例如: 一个重复检测网络是否畅通的脚本: #!/bin/bas ...

  7. matlab 迭代 混沌与分形实验报告,实验四 函数的迭代混沌与分形.doc

    实验四 函数的迭代混沌与分形.doc 实验四函数的迭代.混沌与分形实验目的1认识函数的迭代:2了解混沌和分形迭代在数值计算中占有很重要的地位,了解和掌握它是很有必要的本实验将讨论用NEWTON迭代求方 ...

  8. linux文件的定义变量的值,linux shell 自定义函数方法(定义、返回值、变量作用域)...

    一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...

  9. linux shell 自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  10. linux无filelength函数,Linux Shell 自定义函数(定义、返回值、变量作用域)介绍

    定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 可以带function f ...

最新文章

  1. MATLAB_no.1:入门作业_histeq():_imhist()_(男孩的三个图,以及文字描述)
  2. 通信错误:(-1)[描述:无法解析路由器DDNS地址,请检查DDNS状态.] 解析办法
  3. Spring data jpa命名规范
  4. 关于Visual C++ 2008中wprintf和wprintf_s输出中文乱码问题
  5. hibernate批量删除和更新数据
  6. JavaScript 位运算总结拾遗
  7. Adb shell命令打电话测试4G
  8. UA MATH564 概率论VI 数理统计基础2 多元正态分布
  9. python 发布啦!!
  10. linux mac地址文件夹,android4.4.2系统的mac地址文件在哪个文件里面
  11. 求阶乘的第一个非零数字_查找数字阶乘中的尾随零
  12. B站COO李旎:超2000万人在B站看纪录片
  13. 二叉树的建立与遍历(数据结构)
  14. springboot集成购买阿里的rocketmq
  15. Vim快捷键(三):剪切复制粘贴
  16. 诺瓦-测试-面经(一面+二面)
  17. 吃热狗游戏Java_(转)Java中正确理解Thread Local的原理与适用场景
  18. 无线通信与编码_Rake接收机_三种合并算法_MATLAB仿真代码
  19. 李宏毅2022机器学习hw4
  20. pytorch历史版本下载_Pytorch、Anaconda安装、Navidia版本更新

热门文章

  1. C++面试题 (31-40)
  2. 躬履艰难,其节乃见:华为陈黎芳眼中的全球责任
  3. java学习教程基础入门及提高,22年最新
  4. 企业架构(EA)产生背景
  5. Word2003:制作条形码(转)
  6. 国内手机强删谷歌服务,告诉你该怎么办
  7. Electronica慕尼黑上海电子展 | Samtec连接器精彩亮相
  8. 9月5日关键点检测学习笔记——人体骨骼点检测:自顶向下
  9. h5ai界面修改_h5ai-轻便又美观目录列表程序支持在线预览文本、图片、音频、视频等...
  10. 互链月报 | ICO起死回生? 9月加密货币融资额环比增长33倍