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

本文旨在复习Shell基本概念、编程模型、变量类型、脚本规范、语言结构、脚本执行方式
shell

Linux层次结构和Shell基本概念
express


Linux层次结构大体分为这么几层编程

请注意:基本上各层次都屏蔽了底层差别性,既能管理调用底层,同时又为上一层[或多层]服务安全

Hardware Platform:硬件层有各类各样不一样厂家的各类硬件接口,对上层提供服务bash

OS Kernel:内核层,屏蔽底层硬件差别,提供核心功能,调度资源运行指令程序,上层能够进行System Call编程语言

LIB 库文件:Kernel中的服务访问点,为了安全性、便利性等封装成库文件,上层能够进行库调用ide

么是Shell:是用户和Linux沟通的桥梁,分为CLI Shell[bash、zsh、tsh]等,GUI Shell[Gnome、KDE等]函数


    • Shell是命令语言:能交互式地解释和执行用户输入的命令,提请给内核来执行spa

    • Shell是程序设计语言:能定义各类变量参数,并提供控制结构如循环、分支、判断等.net

    • 本系列旨在讨论Shell编程的一些基础知识和概念

      wKiom1X_fi6xHntAAAnjXO5qzWc188.bmp

Shell编程模型


高级语言编程模型主要有面向过程、面向对象,通俗来讲

面向过程:分析解决问题的步骤,把代码封装成函数一一实现这些步骤,使用的时候一一调用

面向对象:把构成问题的事物分解成各个对象,创建对象的目的不是为了完成一个个步骤,而是为了描述事物在解决整个问题的过程当中所发生的行为。

例子一个下棋的过程,说明面向过程和面向对象。

wKiom1X_j2DCv518AAwPUJYcRuQ561.bmp

请注意:整体来讲,Shell编程是面向过程的,分解实现,调用后完成自动化。但新概念提出了Shell面向对象编程


Shell变量类型


Shell中变量大体有5类

  环境变量:做用范围当前shell进程及其子shell进程

  本地变量:做用范围仅当前shell进程

  局部变量:当前shell进程中某个局部代码片断,一般是函数上下文

  位置变量:参考grep后向引用,引用脚本参数,$1 $2 $3

  特殊变量:shell程序设置的特殊变量。一部分是环境变量,有一部分是局部变量,保证了shell的正常运行。

wKioL1X_q0_jYJ7zAA0WwLioUtI144.bmp


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

注意点:

     <1>开头必须指定shebang[魔术],即代表该文件的格式,一般保存为*.sh

     <2>注释信息:一般做者、时间、做用、描述等,但不局限于此,不建议中文注释

     <3>内容部分:可填充各类命令、语言结构、条件判断、分支等等,实现逻辑增强

     <4>代码缩进,易读,尤为是成对出现的经过缩进相同长度,更加直观可读

     <5>成对符号、流程控制建议一次写完,避免遗漏,先总体后细节


Shell语言结构


同大多数高级语言,有3种语言结构,可组合使用

     ● 顺序结构 --> 默认法则,逐条执行语句

     ● 选择结构 --> 分支,进行条件判断,符合条件的分支予以执行;不符合的略过

     ● 循环结构 --> 将同一段代码反复执行有限次,直到知足跳出条件,不然是死循环

wKioL1X_nzbgEErUAAu0eEp29xE866.bmp

Shell脚本执行方式


一般脚本执行方式有3种

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

    wKioL1X_oiCyMGnAAARu-OWW4Q4138.bmp

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

    wKiom1X_n9OCveS-AAMIMAkbGJA135.bmp

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

    wKioL1X_of7zxq7jAAQV-Iz_wOY763.bmp

相关文章
相关标签/搜索