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

[9-13]Shell系列1——基本概念

[复制链接]

尚未签到

发表于 2018-8-24 13:28:50 | 显示全部楼层 |阅读模式
  本文旨在复习Shell基本概念、编程模型、变量类型、脚本规范、语言结构、脚本执行方式
  Linux层次结构和Shell基本概念
  Linux层次结构大致分为这么几层
  ● 请注意:基本上各层次都屏蔽了底层差异性,既能管理调用底层,同时又为上一层[或多层]服务
  ● Hardware Platform:硬件层有各种各样不同厂家的各种硬件接口,对上层提供服务
  ● OS Kernel:内核层,屏蔽底层硬件差异,提供核心功能,调度资源运行指令程序,上层可以进行System Call
  ● LIB 库文件:Kernel中的服务访问点,为了安全性、便利性等封装成库文件,上层可以进行库调用
  ● 什么是Shell:是用户和Linux沟通的桥梁,分为CLI Shell[bash、zsh、tsh]等,GUI Shell[Gnome、KDE等]



    •   Shell是命令语言:能交互式地解释和执行用户输入的命令,提请给内核来执行
    •   Shell是程序设计语言:能定义各种变量参数,并提供控制结构如循环、分支、判断等
    •   本系列旨在讨论Shell编程的一些基础知识和概念


  Shell编程模型
  高级语言编程模型主要有面向过程、面向对象,通俗来说
  ● 面向过程:分析解决问题的步骤,把代码封装成函数一一实现这些步骤,使用的时候一一调用
  ● 面向对象:把构成问题的事物分解成各个对象,建立对象的目的不是为了完成一个个步骤,而是为了描述事物在解决整个问题的过程中所发生的行为。
  例子:一个下棋的过程,说明面向过程和面向对象。

  ● 请注意:总体来说,Shell编程是面向过程的,分解实现,调用后完成自动化。但新概念提出了Shell面向对象编程
  Shell变量类型
  Shell中变量大致有5类
  ● 环境变量:作用范围当前shell进程及其子shell进程
  ● 本地变量:作用范围仅当前shell进程
  ● 局部变量:当前shell进程中某个局部代码片段,通常是函数上下文
  ● 位置变量:参考grep后向引用,引用脚本参数,$1 $2 $3
  ● 特殊变量:shell程序设置的特殊变量。一部分是环境变量,有一部分是局部变量,保证了shell的正常运行。

  Shell脚本规范
  任何一门编程语言,都会遵循一定的编程规范,比如C语言的include等,shell也有自己的编程规范
  例子:以一个shell脚本例子来说明规范
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  #!/bin/bash
  #Author:By Lance,2015-09-21 13:37:03
  #Functions:Shell Script specification
  cat "/etc/system-release"      --->填充命令
  if [ expression ];then                    --->填充判断条件
  statement1
  fi
  ....
  source
  注意点:
  开头必须指定shebang[魔术],即表明该文件的格式,通常保存为*.sh
  注释信息:通常作者、时间、作用、描述等,但不局限于此,不建议中文注释
  内容部分:可填充各种命令、语言结构、条件判断、分支等等,实现逻辑加强
  代码缩进,易读,尤其是成对出现的通过缩进相同长度,更加直观可读
  成对符号、流程控制建议一次写完,避免遗漏,先整体后细节
  Shell语言结构
  同大多数高级语言,有3种语言结构,可组合使用
  ● 顺序结构 --> 默认法则,逐条执行语句
  ● 选择结构 --> 分支,进行条件判断,符合条件的分支予以执行;不符合的略过
  ● 循环结构 --> 将同一段代码反复执行有限次,直到满足跳出条件,否则是死循环

  Shell脚本执行方式
  通常脚本执行方式有3种
  ● ./test.sh执行,前提条件进程发起者对该文件有x权限,本质是通过调用一个新shell进程来运行,注意变量改变

  ● bash test.sh执行,本质上是调用bash命令,将test.sh作为该命令的参数来执行,该shell脚本可以无需x权限

  ● source test.sh. test.sh[.后有空格] 将shell脚本导入当前shell进程来执行,注意变量也会导入当前shell进程



运维网声明 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-556023-1-1.html 上篇帖子: Linux系统关键文件备份shell脚本 下篇帖子: MySQL 分库备份shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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