设为首页 收藏本站
查看: 689|回复: 0

小苏的Shell编程笔记之一

[复制链接]

尚未签到

发表于 2018-8-24 13:50:12 | 显示全部楼层 |阅读模式
  引言:个人感觉,Shell脚本对于Linux系统管理员太重要了,一条Shell语句可以达到几百条C语言代码的效果,尤其是当我们面对大型的集群的时候,Shell脚本更是把我们的工作效率提高了上千倍,听说Google的运维工程师就是通过Shell脚本来管理上千台的Linux主机,另外,Linux中很多可执行文件都是Shell写的,所以,我们一定要学好Shell脚本。
  
  1.  Shell的功能和定义
  Shell是一个功能强大的计算环境,既可以将其作为命令解释器,也可以将其作为编程语言,(个人感觉:类似于windows下的批处理文件,但要比它更强大)Shell的功能主要包括以下几个方面
  l  接受来自键盘的命令
  l  检查命令的正确性
  l  命令错误则给出报错信息
  l  命令正确则使用相应的系统调用执行命令(产生进程)
  l  命令执行完毕,给出命令执行的结果
  2.  Shell脚本介绍
  用户可以将Linux的命令以编程的方式组合起来提交给Shell,Shell负责解释执行这种程序设计语言所写的代码。Linux把这种程序设计语言构成的文件称为 Shell Script 或Shell脚本。
  Shell脚本是包含一个或者多个Shell命令的集合,这些命令会按照编写的顺序而被依次执行。Shell提供另一种利用简单命令组合实现复杂功能的机制。Shell脚本中支持绝大多数编程语言中所能见到的程序控制结构,可以使用注释(“#”)对脚本的功能进行说明,可以使用条件测试表达式进行分支判断,可以使用循环语句处理大量数据,可以定义变量、数组等,Shell脚本也提供对函数的支持。
  3.  Shell的通配符
  *   匹配任意长度的任意字符
  ?   匹配任意一个字符
  []   匹配任意属于字符组的字符
  例子:ls 20.[1234]
  输出 : 20.2  20.3  20.4
  也可以使用“-”符号来设定范围,比如[0-9]表述数字0~9之间的任意数字,[a-z]表示任意一个小写字母,[A-Z]表示任意一个大写字母。[1-389]表示1,2,3,8,9之中的任意一个数字。当然,也可用“,”隔开,比如[a-h,W-Z]
  同时,可以用“!”表示取反,比如[aoeiu]表示所有的元音字母中的任意一个,而[!aoeiu]表示所有的辅音字母中的任意一个字母。
  {}   将大括号中的字符串以及前导字符串和后缀字符串作为匹配条件
  例子:echo m{oon ,op,ud }s
  输出: moons mops muds
  其基本格式为:前导字符串{字符串1,字符串2,……..}后缀字符串
  4.  Shell的条件执行
  ||   逻辑或(两个管道符号
  用于连接两个命令,当前一个命令执行不成功才执行后一个
  &&  逻辑与
  也用于连接两个命令,当前一个命令执行成功才执行后一个
  5.  Shell基础知识
  l  Shell脚本是大小写敏感的
  l  Shell脚本中使用“#”做为注释
  l  错误重定向为 2>
  l  错误和标准输出的重定向为 &>
  l  要善于使用管道命令,因为管道命令可以连接两个不同的命令
  l  如果遇到比较耗费时间的Shell进程,可以在后面加上 “&”符号,使其在后台运行
  l  如果想在同一行输入多条指令,就用“;”隔开
  6.  单引号,双引号及反引号
  l  双引号会对字符串中出现的“$”, “””,“\”和“`”进行替换。
  l  单引号不会对任何符号进行替换
  l  反引号会把字符串当命令执行(所谓的反引号就是ESC键下面的,数字1左边的那个键)
  7.  指定使用的Shell
  Shell脚本文件的第一行必须遵循标准,来指定相应的Shell来运行脚本。
  示例格式为:
  #!/bin/bash
  8.  运行脚本的两种方法
  l  给脚本加上执行权限,然后用 ./bash.sh (参数)
  l  直接使用sh bash.sh (参数)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-556045-1-1.html 上篇帖子: SHELL第一课学习笔记 下篇帖子: 向awk传递shell变量的两种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表