位置: 编程技术 - 正文

Shell中的函数、函数定义、作用域问题介绍(shell函数写法)

编辑:rootadmin

推荐整理分享Shell中的函数、函数定义、作用域问题介绍(shell函数写法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell中的函数return,shell中的函数调用,shell中的函数调用,shell中的函数调用,shell中的函数,shell中的函数调用,shell中的函数有什么作用,shell中的函数有什么作用,内容如对您有帮助,希望把文章链接给更多的朋友!

说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法。

一、Shell中函数的定义

为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西。而Shell中函数的定义有两种方法,如下:或注意,()内是没有参数的,它并不像C语言那样,在()里可以有参数。

那大家可能就郁闷了,函数调用或多或少总是会需要一些参数,那么这些参数要怎么传递进来呢?其实参数传递方式为:fname;(不需要传递参数)或fname agr1 arg2(需要传递两个参数);

二、自定义函数的例子

不知道大家的情况如何,反正一开始我就觉得很别扭,因为在C语言中,例如我定义一个函数int cmp(int a, int b),那么我就会在函数中使用到函数头中声明的变量a和b,而在Shell中却没有定义参数,那我的函数又需要用到这两个参数,怎么办好呢?下面就用一个例子来说明好了。

Shell中的函数、函数定义、作用域问题介绍(shell函数写法)

先来说说这个程序的功能吧,就是输入一个数字n,然后从0开始每隔1秒输入一个数字,直到输出n-1为止。首先,程序会要求你输入一个数学,然后调用函数来进行输出的功能。

注意注释1的那一句,里面有一个变量$1,大家应该还记得调用函数时参数的传递方式,即fname agr1 arg2,这里的$1就是表示第一个参数,依此类推,$2就是第二个参数,$3就是第3个参数,$n就是表示第n个参数。

所以$1就是变量n的值。这样说大家懂了吧!

补充一下,就是:

$0:是脚本本身的名字;$#:是传给脚本的参数个数;$@:是传给脚本的所有参数的列表,即被扩展为"$1" "$2" "$3"等;$*:是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个,即被扩展成"$1c$2c$3",其中c是IFS的第一个字符;$$:是脚本运行的当前进程ID号;$&#;:是显示最后命令的退出状态,0表示没有错误,其他表示有错误;

特别注意,传递参数时,(这个例子中)一定要写成LoopPrint $n;而不能写成LoopPrint n。为什么?例如你输入的是,则n的值($n)为,前者表示的是把n的值,即传递给函数LoopPrint,而后者则表示把字符n传递给函数LoopPrint。这点与在静态语言中的函数参数传递是很不同的,因为在Shell中变量的使用并不需要先定义,所以要使用变量,让Shell知道它是一个变量,并要传递它的值时,就是用$n,而不能直接用n,否则只把n当作一个字符来处理,而不是一个变量。

三、作用域问题

函数的作用域与C/C++语言中的作用约束是一样的,函数的定义一定要出现在函数的调用语句之前,但是有一点跟C/C++中不一样的就是变量的作用域问题,经过本人的试验,在注释1的语句改为while [ $count -lt $n ];也是可行的,即函数可以使用本文件中出现的任何变量,但是本人还是建议使用上面例子中的方法,即while [ $count -lt $1 ],并且不要随意使用函数中的变量之外的变量,因为你并不一定知道你调用函数时函数外有什么变量存在也不知道它的值是什么,也不能保证别人在使用你的函数时会传递你在函数中使用到的变量名,如这里的n,别人在使用时可能传递的就是他自己定义的变量,如Count等。

Shell脚本制作的终端会话回放功能脚本分享 不久前在书上看到两个很有趣的命令——script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视

Shell脚本对文件中的行、单词、字符进行迭代输出示例 在进行文本文件进行处理时,对文件件中的行、单词、字符进行迭代和遍历是非常常用的操作。而将一个简单的循环用于迭代,再加上来自stdin或文件的

Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base) shell可以在不调用第3方命令,表示不同进制数据。这里总结以下表示方法。shell脚本默认数值是由进制数处理,除非这个数字某种特殊的标记法或前缀开

标签: shell函数写法

本文链接地址:https://www.jiuchutong.com/biancheng/379889.html 转载请保留说明!

上一篇:Linux下交互式与非交互式修改用户密码的例子(交互式shell是什么意思)

下一篇:Shell脚本制作的终端会话回放功能脚本分享(shell脚本 -mtime)

  • 不予认定一般纳税人
  • 进项税额转出如何申报
  • 纳税申报表申报日期
  • 制造费用科目一定无余额
  • 税务师厉害吗
  • 销项税额和进项税额发票怎么区别
  • 小额支出没有发票怎么做账
  • 其他应付款转实收资本有风险吗
  • 运输企业车辆折旧一次性折旧
  • 会计做账借贷怎么做
  • 员工旅游费用可以税前扣除吗?
  • 个体工商户可以给员工交社保吗
  • 公司给员工购买意外险怎么做账
  • 残保金什么样的企业要交
  • 付款然后付的手续费如何做账?
  • 投资款打到个人账户算诈骗吗
  • 共同投资叫什么
  • 客户以旧料抵货款账务如何处理?
  • 公司还没有核税该如何进行业务汇款?
  • 增值税和消费税的区别和联系
  • 转让股权应具备什么条件
  • 其他应收账款贷方表示什么意思
  • 商业银行贷款的流动性与效益性成正比
  • 海外佣金税务怎么缴纳
  • 营业外收入怎么开票能开吗
  • 事业单位年末预算会计货币资金在贷方有余额对吗
  • 鸿蒙的usb调试
  • 财政拨款事业单位和全额事业单位
  • 月底财务为什么要关账,暂时开不了发票
  • 往来账乱如何处理
  • linux系统查询mac地址命令
  • 扣客户的罚款会计科目
  • php composer自动加载
  • win10右键个性化显示该文件
  • 用支票购入厂部办公用品2000元,车间办公用品1000元
  • yolov5s和yolov5m
  • vue如何配置环境变量
  • 留抵税额进项构成比例
  • php如何生成html
  • 无法按时交纳税怎么办
  • 写字楼租赁房产税
  • web应用技术是什么
  • 计提坏账准备需要确认递延所得税吗
  • 车险增值税发票模板图片
  • 网上报税优点与缺点
  • 对公给个人转账有风险吗
  • 织梦栏目描述调用
  • python 添加列表
  • 合伙企业要不要每月做账?报税是不是与一般的有限公司一样,每月申报纳税吗?
  • mysql密码忘了咋办
  • 跨年的房租费用怎么做账
  • 保理公司的钱来自哪里
  • 提前送了礼物还要发红包吗
  • 三个月 租房
  • 汇算清缴补交的所得税怎么记帐
  • 劳务所得税税率表2023年1月
  • 施工单位代建收费合理吗
  • 公司缴纳印花税如何缴纳
  • 营业外收入核算的内容有
  • 去银行提备用金需要什么
  • 来料加工费用价格表
  • 企业的案例分析报告
  • sqlserver数据库中表的类型有哪些
  • xp直升win7
  • sharedprem.exe - sharedprem是什么进程 有什么作用
  • 微软内测
  • unity怎么创建摄像机
  • 重装操作系统后无法开机
  • AddForceAtPosition方法:增加刚体点作用力
  • mysql批量建表脚本
  • js 键盘码
  • JavaScript基础语法
  • node.js权威指南
  • python 如何访问数据库
  • 人事科负责人是否必须是党员?
  • 国家税务培训信息网官网
  • 企业怎么成立工会组织
  • 乡镇经管站是如何工作
  • 税收助力双创
  • 城市建设维护税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设