shell脚本

146 阅读5分钟

编程

面向过程语言

  • 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理
  • 问题规模小,可以步骤化,按部就班处理
  • 以指令为中心,数据服务于指令
  • C,shell

面向对象语言

  • 将编程看成是一个事物,对外界来说,事物是直接使用的,不用关心事物内部的情况。而编程就是设置事物能够完成功能。
  • 一种认识世界、分析世界的方法论。将万事万物抽象为各种对象
  • 类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合
  • 对象是类的具象,是一个实体
  • 问题规模大,复杂系统
  • 以数据为中心,指令服务于数据
  • java,python,golang等

三种处理逻辑

顺序执行:程序按从上到下顺序执行,俗称的屎山代码,即一路执行到结束,无论成功与否,继续进行下一条。

选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行。

循环执行:程序执行过程中需要重复执行多次某段语句(已知次数 已知条件 死循环)。

shell的作用

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的操作传递给内核执行,并输出执行结果。 常见的 Shell 解释器程序有很多种,使用不同的 Shell 时,其内部指令、命令行提示符 等方面会存在一些区别。通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。
linux中常见的shell

  • bash:基于gun的框架下发展的shell
  • csh:类似c语言的shell
  • tcsh:整合了csh提供了更多功能
  • sh:已经被bash替换
  • nologin:让用户无法登录

bash (/bin/bash)是目前大多数Linux 版本采用的默认shell
shell脚本用途

  • 将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率
  • 减少手工命令的重复输入,一定程度上避免人为错误
  • 将软件或应用的安装及配置实现标准化
  • 用于实现日常性的,重复性的运维工作,如:文件打包压缩备份,监控系统运行状态并实现告警等

shell脚本及构成

  • 就是将命令按顺序一一列出,最后自动执行
  • 执行需要权限,也可以直接使用绝对路径
  • 脚本其实不复杂,通用脚本环境改变后依然可以使用的脚本

脚本执行逻辑及执行方式

脚本执行逻辑

  1. 顺序执行:程序按从上到下顺序执行
  2. 选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
  3. 循环执行:程序执行过程中需要重复执行多次某段语句

执行方式

  1. 指定路径去执行文件(需要有执行权限)
  2. 指定解释器去执行(不需要权限)

脚本错误调试

  1. 命令错误
    命令出错不会影响接下来的命令继续
  2. 语法错误
    会影响接下来的命令继续
  3. 逻辑错误
    只能自己去筛查查代码的正确
    总结:脚本错误常见的有三种区别

1 语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的
2 命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察
3 逻辑错误:只能使用 bash -x 进行

重定向

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据
  • 标准输出:通过该设备向用户输出数据
  • 标准错误:通过该设备报告执行出错信息

重定向的意思就是 ,不输出到屏幕上,输出到你指定的位置

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出1>将输出结果保存到指定的文件(覆盖原有内容)
追加>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
错误追加2>>标准错误输出结果追加到指定的文件尾部
混合输出&>无论对错都可以重定向 将标准输出、标准错误的内容保存到同一个文件中

image.png
image.png

多行重定向

Here Document 概述 使用 I/O 重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat 或 read 命令。 HereDocument是标准输入的一种替代品, 可以帮助脚本开发人员不必使用临时文件来构建输入信息, 而是直接就地生产出一个文件并用作命令的标准输入。

image.png
变量赋值

image.png

变量

常见shell变量类型
自定义变量:由用户自己定义,修改和使用
环境变量:由系统维护,用于设置工作环境
只读变量:只可以读取不可以更改
位置变量:通过命令行给脚本传递参数
预定义变量:Bash中内置的一类变量,不能修改

命名要求

  • 区分大小写
  • 不能使程序中的保留字和内置变量:如:if, for,hostname 命令
  • 只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反
  • 不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH
  • 大驼峰 StudentFirstName
  • 小驼峰 studentFirstName
  • 下划线 student_name

基础脚本

求和

image.png

image.png

判断脚本

image.png image.png

image.png

使用脚本安装程序

image.png

image.png

image.png

脚本编译安装

image.png

image.png

image.png

image.png

image.png image.png