Shell 循环语句、函数及数组

发布时间:2021-12-02 13:19:44

for循环语句
读取不同的变量值,用来逐个执行同一组命令。


for 变量名 in 取值列表
do
命令序列
done







while循环语句
重复测试某个条件,只要条件成立就反复执行,直到条件不成立结束循环。


while 条件测试操作
do
命令序列
done





until循环语句
重复测试某个条件,只要条件不成立就反复执行,直到条件成立结束循环。(与while循环语句相反)







for循环示例
输入某个范围内的数,分别计算从1到这个数的奇数和、偶数和,当输入不在范围内时,提示输入错误。


1.编写脚本文件。


2.赋予脚本文件执行权限并运行测试。





while循环语句示例
来玩个好玩的,做个猜0999数字大小的游戏,用系统变量RANDOM随机生成数字取余后赋值给我们自定义的变量。运行脚本后,输入0999的数字猜大小,如果没有猜中,会提示猜得数字偏大或偏小,没猜中的话会一直循环下去,直达我们猜中了这个数字,并且会提示我们猜了几次。


1.编辑脚本文件。

注:while后面的true 表示一直循环;let TIMES++ 表示循环次数,也就是我们猜价格的次数;exit 0 表示$?,返回值状态为0表示程序执行正确,这里用于猜对价格后结束循环。


2.赋予脚本文件执行权限并运行测试。




until循环语句示例
计算1到50的和,定义两个初始变量,一个为总和,一个为加数。从1开始,每一次循环加数都增加1,只要加数满足小于等于50的条件,就一直循环下去,直到加数大于50,循环结束,输出总和值。


1.编写脚本文件。


2.赋予脚本文件执行权限并运行测试。











Shell函数
?将命令序列按格式写在一起
?可方便重复使用命令序列
?Shell函数定义
[ function ] 函数名(){
命令序列
[ return x ]
}
?调用函数的方法
函数名 [参数1][参数2]


在Shell脚本中函数的执行并不会开启一个新的子Shell,而是仅在当前定义的Shell环境中有效。如果Shell脚本中的变量没有经过特殊设定,默认在整个脚本中都是有效的。在编写脚本时,有时需要将变量的值限定在函数内部,可以通过内置命令local来实现。函数内部变量的使用,可以避免函数内外同时出现同名变量对脚本结果的影响。
例:



在这个脚本中,myfun函数内部使用了local命令设置变量i,其作用是将变量i限定在函数内部。myfun函数外部同样定义了变量i,内部变量i和全局变量i互不影响。脚本执行时先调用了函数myfun,函数内部变量i为8,所以输出结果是8。




函数的作用范围
?函数在Shell脚本中国仅在当前Shell环境中有效
?Shell脚本中变量默认全局有效
?将变量限定在函数内部使用local命令



函数的参数
?参数的用法
函数名称 参数1 参数2 参数3 …
?参数的表示方法
?$1 $2 $3 … ${10} ${11} …






Shell数组


应用场景包括
?获取数组长度
?获取元素长度
?遍历元素
?元素切片
?元素替换
?元素删除


数组定义方法
?方法一:数组名=(value0 value1 value2 …)
?方法二:数组名=([0]=value [1]=value [2]=value …)
?方法三:列表名=”value0 value1 value2 …”
数组名= ($列表名)
?方法四:数组名[0]=”value”
数组名[1]=”value”
数组名[2]=”value”



数组包括的数据类型
?数值类型
?字符类型(使用””或’’定义)




示例


1.获取数组长度



2.读取某下标赋值



3.数组遍历




4.数组切片



5.数组替换



6.数组删除

相关文档

  • 看唇就可知女人身体是否有“毒”(4)
  • 三年级安全教育演讲稿
  • 当今世界上最大的船
  • 求一部动画片关于吸血鬼的美国的在一个城堡里的有个叫达库拉
  • Composer工具安装laravel详细教程
  • 吉他左手按弦技巧和练习方法
  • 在北京创业推荐项目
  • java nio 多个端口_mina在spring中的配置多个端口
  • 【前端】div+background-image和img标签的选择(转)
  • idea 报错 Cannot run program
  • 农家乐策划书范文精选
  • 珍爱生命的健康检查
  • 我家的花
  • Android应用开发 MP3音乐播放器代码实现 一
  • 常识用英语
  • 大学生人际关系的沟通技巧
  • 吃炒米饭就什么菜好
  • 动态数据生成Word文档
  • 编译原理总结,看这一篇就够了!
  • 规划设计方案与建设工程方案设计有何区别
  • 演讲与口才读后感600字
  • 论文笔记--An Overview of Cross-Media Retrieval: Concepts, Methodologies, ...-2018-(一)
  • 2015年嘉兴学院成人高考招生简章
  • 我开碰碰车
  • 为什么结婚杂文随笔
  • 新同事独特的自我介绍
  • leetcode_middle_39_424. Longest Repeating Character Replacement
  • HTAP数据库系列 | 物联网时代的数据库如何选型?
  • 计算机网络第一章课后题完整详细答案
  • 《我想变成“小仙女”》
  • 猜你喜欢

  • 校长运动会开幕式致辞范文
  • 对储氢方式及储氢容器改进方法的研究
  • 深圳金运昌有色金属有限公司(企业信用报告)- 天眼查
  • 黄河颂导学案1 人教版(免费下载)
  • 建设社会主义新农村存在的问题及对策
  • 【推荐下载】创意幽默的结婚祝福语[1]-实用word文档 (4页)
  • 《中国共产党党务公开条例(试行)》心得体会:学好新《条例》 树好新形象
  • 斜花六角压铆螺母
  • 达州市四通商贸有限责任公司第二经营部企业信用报告-天眼查
  • 四川广安中学2013-2014年新人教版七年级下数学期末试卷
  • 班组长培训(第1天)
  • CentOS下svn迁移备份的三种方法
  • 最新新人教版八年级下册英语重点短语、句子
  • 腌制白萝卜的做法大全有哪些【养生食谱大全】
  • 基于单片机的SPWM逆变器的控制技术的研究
  • 市直机关工作人员行为规范
  • 会计集中核算后对内部审计的影响及对策
  • 江苏省淮安市淮宁中学2014-2015学年高一下学期期末考试历史试卷(扫
  • 收藏需要开创阅读练习及答案
  • 2015人教版一年级下数学期末复*试题(全套)
  • 福建省永春县第一中学2018-2019学年高一3月月考地理试题 Word版含解析
  • 2019年春八年级英语下册 Module 2 Experiences模块话题微写作课件 (新版)外研版
  • 2018-2019年乐清市淡溪镇第一小学三年级上册英语模拟期末测试无答案
  • 第四十章 大环内酯类、林可霉素类及多肽类抗生素
  • 数学人教版五年级下册《探索图形》*题
  • 读书的故事初中作文500字
  • 数学人教版五年级下册《探索图形》 练*题
  • 高二励志演讲听后感
  • 八年级语文下册课件18吆喝 (共19张PPT)
  • 信息化背景下大学英语多元混合式教学模式改革研究
  • xp的系统怎么设密码电脑密码忘记了怎么办
  • 【精品推荐】新人教版三年级数学下册知识点分类归纳概要
  • 六上分数乘除法应用题(2)
  • 2018-2019年石家庄市高邑县大营镇前哨营中心小学三年级上册科学模拟期末测试无答案(1)
  • 伤感等待的说说
  • 2019年最新物资采购年终总结工作总结文档【五篇】
  • 学校教师培训终工作总结(二)
  • 微信文章排版技巧总结
  • 我国十五十一五教育科学发展规划课题建设
  • 大学生如何备考英语四级
  • 记录使用yum安装nginx之后的目录问题
  • 形容女生笑容的语句摘抄
  • 电脑版