linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...
摘要
函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高。
高级语言都支持函数,Shell也不例外。今天就为大家介绍下Shell中函数相关用法。
函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高。
高级语言都支持函数,Shell也不例外。今天就为大家介绍下Shell中函数相关用法。
一、Shell函数的语法
因为函数是脚本类语言,在执行时是逐行执行的,因此,Shell 函数必须先定义后使用。
Shell 函数的定义格式如下:
[ function] funname [()]
{
command;
[returnint;]
}
说明:function关键词是可选项,可加可不加。
大括号内饰函数体,最后是返回值,可以加【return】关键词来指定函数返回内容,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)。
二、Shell函数使用举例
接下来我们还是通过例子来学习下Shell函数的运用。
示例1:
#!/bin/bash
# author:Linux大学
# url:www.linuxdaxue.com
#date:2016-06-01demo(){echo "这是我的第一个 shell 函数!"}echo "-----函数开始执行-----"demoecho "-----函数执行完毕-----"
说明:demo是一个函数的定义,函数体只有一句:echo "这是我的第一个 shell 函数!"
然后通过函数名来调用函数。
程序输出:
-----函数开始执行-----这是我的第一个 shell 函数!
-----函数执行完毕-----
这个例子并没有体现函数的入参等使用,接下来给大家介绍下Shell中函数的传参方法。
三、Shell函数参数处理
在Shell中,调用函数时可以向其传递参数。
在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数,$0代表脚本本身。
Shell函数参数处理例子
示例2:
我们再看一个例子:
#!/bin/sh#Author:Linux大学
#url:http://www.linuxdaxue.com
#date:2016-06-01
functionfSum()
{echo "入参为:"$1,$2return $(($1+$2))
}
fSum5 7total=$(fSum 3 2)echo "Return :"$total,$?
这个定义了一个计算参数和的函数,函数可以通过$1,$2这种形式来获取入参值,然后通过$(($1+$2))这种形式来将两值相加,并返回结果。
调用时,也可以通过括号的形式来调用,Shell会调用单括号里面的命令。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此 各个输入参数直接用 空格分隔。
输出:
入参为:5,7Return :入参为:3,2,5
注意:
注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
函数中用到的特殊字符
另外,还有几个特殊字符用来处理参数:
参数
说明
$#
传递到脚本的参数个数
$*
以一个单字符串显示所有向脚本传递的参数
$$
脚本运行的当前进程ID号
$!
后台运行的最后一个进程的ID号
$@
与$*相同,但是使用时加引号,并在引号中返回每个参数。
$-
显示Shell使用的当前选项,与set命令功能相同。
$?
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
好了,有关Shell函数的相关知识先为大家介绍到这里,Shell中的函数非常强大,在此不再展开讲,希望大家能够自己多多练习,熟练掌握。
更多Linux Shell教程请看:Linux Shell系列教程
linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...相关推荐
- Linux Shell脚本入门教程系列之(十五) Shell函数简介
本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...
- Linux Shell脚本入门教程系列之(十)Shell for循环
本文是Linux Shell脚本系列教程的第(十)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 基本任何语言都有自己的循环语句,Shell当然也不例外,继上一篇之后,今天 ...
- linux sed p变量,Linux sed 命令详解系列教程之各种问题解决
本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...
- shell for循环命令行_精心汇总的24道shell脚本面试题
虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...
- linux 挂载硬盘_Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令...
大家好,我是可乐,一个专注原创,乐于分享的程序猿.本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的海量免费书籍资料 通过前面两篇博客,我们介 ...
- linux中rcf命名管道,RCF的简单使用教程以及什么是回调函数
RCF的使用教程 RCF(Remote Call Framework)是一个使用C++编写的RPC框架,在底层RCF支持多种传输实现方式(transport implementations). 包括T ...
- 乐鑫代理启明云端分享|ESP32系列教程之三: VS Code远程连接Linux
提示:本文档为ESP32教程系列,旨在为客户进行ESP32系列芯片开发提供环境搭建.工程示例演示等方面的参考文档及视频演示,降低ESP32系列芯片.模组开发的入门难度. ESP32教程系列文档主要参考 ...
- Linux小小白入门教程(十五):用户和用户组
Linux是一个权限控制非常严格的操作系统.在不了解Linux权限规则前提下,基本对Linux的操作会寸步难行. 简介 Linux中权限.用户.用户组三者之间关系紧密.要更好的使用Linux,必需掌握 ...
- python函数助手_转jmeter(十五)函数助手
由于时间和版本问题,其中有些内容和排版我做了修改和重新整理,使其更符合最新的jmeter版本. 一.使用jmeter函数助手 启动jmeter后,可以在JMeter的选项菜单中找到函数助手对话框(快捷 ...
最新文章
- C# checked、unchecked操作符
- 新的Mac下如何配置开发者账号信息
- mysql防注入pdo_mysql PDO和存储过程动态SQL注入
- pandas 根据单号分类_由 “猫捉老鼠”游戏联想的用户分类问题
- ? SegmentFault Hackathon 文艺复兴上海站作品集 - 获奖篇
- JAVA并发编程实战---第三章:对象的共享(2)
- easyui label显示不全_easyui 元素遍历问题
- springboot异步任务
- mac原版镜像下载 macos官方镜像下载
- 小白的一周学习汇总!
- 基于DMD实现透过多模光纤(MMF)的聚焦
- 普度大学计算机科学博士,Top15普渡大学计算机博士全奖录取
- MyExcel 2.2.0 版本发布,支持公式导出
- ERP业务流程优化设计之思想和原则
- 情侣博客源码php,分享超炫的表白页面和爱的纪念日源码
- 磁盘分区MBR与GPT详解
- [杂记]LeTeX模板——ppt
- python编写word_如何使用Python来编辑word
- win常用快捷键 和 Dos(cmd)快捷键
- 谈谈关于Android迷宫密码破解
热门文章
- 3、深入理解计算机系统笔记:程序的机器级表示
- Cisco ××× 完全配置指南-连载-IOS ×××阶段2连接详解
- etcd 集群运维实践
- 首次编译Java小程序
- 对Linux Kernel 4.15的支持的VirtualBox 5.2.8发布
- mybatis + oracle insert clob,出现ORA-01461:仅能绑定要插入LONG列的LONG值
- 从零构建一个简单的 Python 框架
- CodeIgniter自带的数据库类使用介绍
- dubbo的provider和consumer的demo
- 微软云计算介绍与实践(实践之十七)