Linux运维实例 高效运维的工具--shell脚本

文章目录

  • 前言
  • 一、shell基本概念
    • 概念
    • 应用范围
    • shell的原理
  • 二、编写shell脚本
    • 1.shell脚本格式
    • 2.脚本文本的权限
    • 3 管道符号和重定向
  • 三 shell中的变量
    • 1 变量的作用
    • 2变量的类型
    • 3 定义一个变量
    • 自定义变量
    • 键盘输入为变量赋值
    • 4变量的作用范围
    • 整数变量的计算
    • 特殊的shell变量
    • 环境变量
    • 位置变量
      • 预定义变量
    • 浮点运算

前言

shell脚本是一种基于Linux开发的语言,可以在许多场景下执行自动化操作,完成重复性操作。

一、shell基本概念

概念

shell脚本形式上是一个将要执行的命令顺序保存到一个文本文件 该文件同样要赋予一定的权限才可以去执行(Linux文件的三个属性),可以去结合shell控制语句以完成更复杂的操作。

应用范围

shell在Linux的应用很广泛,比如高度重复的操作,交互性的任务,批量事务处理,服务运行状态监控,定时任务服务。

shell的原理

这个在之前的博客说过,shell是用户和系统的翻译器,他将用户的指令翻译为二进制语言,然后交给内核或者程序 程序去调用内核或者内核直接去调用硬件去执行的用户要求的程序。
用户默认登录Linux使用的都是shell程序,一般为/bin/bash。 不同shell环境的内部指令 运行环境等会有所区别。
Linux运维实例 高效运维的工具--shell脚本_第1张图片
图为Linux的几种默认shell环境

二、编写shell脚本

1.shell脚本格式

在Linux中编写shell脚本,是用vim文件编辑器对文件进行编辑 每行一条命令去执行
echo是向文本框输入一个文本 前一行跟上指令,
在这里插入图片描述
创建文件

Linux运维实例 高效运维的工具--shell脚本_第2张图片
写入脚本
Linux运维实例 高效运维的工具--shell脚本_第3张图片
给写的脚本文件提取相应的权限 否则无法执行文件。
在这里插入图片描述
执行脚本 echo输出结果。

2.脚本文本的权限

前面说过 如果文件没有执行权限是无法执行 但权限给与不止一种方法,方法一共有四种
第一种 就如上图说的方法 用chmod +x 来给与权限
这里要注意路径 绝对路径和相对路径
Linux运维实例 高效运维的工具--shell脚本_第4张图片
第二种 也是使用chmod 777来给与权限 但是777权限过大 可以根据实际情况来给与 一般给个644即可
Linux运维实例 高效运维的工具--shell脚本_第5张图片
第三种 使用shell来解释脚本 不要求文件要求x的权限
Linux运维实例 高效运维的工具--shell脚本_第6张图片
第四种 使用source脚本文件路径 直接执行

Linux运维实例 高效运维的工具--shell脚本_第7张图片

3 管道符号和重定向

交互式硬件设备有三种交互模式 标准输入 标准输出 标准错误
标准输入是从该设备接收用户输入的数据。设备文件为/dev/stdin 文件描述编号0 默认设备为键盘。
标准输出是通过该设备向用户输出数据。设备文件为/dev/stout 文件描述为1 默认设备为显示器。
标准错误通过该设备报告执行出错信息。设备文件为/dev/sterr文件描述为2 默认为显示器。

管道符号在之前的Linux就使用过 配合命令来进行过滤
在这里插入图片描述
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中使用多个管道。
重定向操作
重定向输入 操作符<表示从指定的文件读取数据
重定向输入操作符>表示将标准输出结果 保存到指定的文件,并且覆盖原有内容. >>表示将标准输出结果追加到指定的文件的尾部,不覆盖原有内容
标准错误输出 2> 将错误信息保存到指定的文件,并且覆盖原有内容。2>>将错误信息 追加到指定的文件的尾部,不覆盖原有内容。
混合输出操作符 &>将标准输出,标准错误保存到同一文件中
2>&1将标准错误输出重定向到标准输出。
在这里插入图片描述
例如使用echo把密码重定向到密码文件
在这里插入图片描述
也可以反向去提取密码来修改密码。

三 shell中的变量

1 变量的作用

用来存放系统和用户需要使用的特定参数(值)
变量由变量名和变量值组成
变量名使用固定的名称,由系统预设或者用户自定义
变量值能够根据设置,系统环境的变化而变化

2变量的类型

自定义变量:由用户自己定义 修改和使用
特殊变量:环境变量,只读变量,位置变量,预定义变量。
环境变量由系统维护,用于设置工作环境
位置变量通过命令行给脚本程序传递参数
预定义变量:bash中内置的一类变量,不可直接修改。

3 定义一个变量

变量的格式为变量名=变量值
变量命名规则:以字母或者下划线开头,区分大小写。
在这里插入图片描述

在这里插入图片描述
echo输出变量 可以输出多个变量。

自定义变量

自定义变量是使用双引号来赋值
“”允许通过$符号引用其他变量值
在这里插入图片描述

‘’禁止引用其他变量值,$视为普通字符
在这里插入图片描述

反撇号表示命令替换,提取命令执行后的输出结果。
在这里插入图片描述
也可以加括号
在这里插入图片描述

键盘输入为变量赋值

方法有2种
第一种是在shell环境中直接去赋值
read -p "要输出的信息"变量名
echo $变量名
在这里插入图片描述
根据提示信息来输出变量
第二种 编写一个脚本 用脚本来执行
Linux运维实例 高效运维的工具--shell脚本_第8张图片

在这里插入图片描述

4变量的作用范围

在默认的环境下,新定义的变量只在当前的shell环境生效,因此称为局部变量。当进入一个子程序或新的子shell环境,局部变量就无法生效。
Linux运维实例 高效运维的工具--shell脚本_第9张图片
pstree可以查看当前的bash环境

Linux运维实例 高效运维的工具--shell脚本_第10张图片
此处切换了bash环境 那么之前的变量就不可以生效了
在这里插入图片描述
变量已失效
如果需要变量再次生效就需要将变量导出为全局变量
使用export指令 格式有两种
export 变量名
export 变量名=变量值
在这里插入图片描述
如图 切换了bash环境变量任然生效。

整数变量的计算

用于计算 格式为expr 变量1 运算符 变量2 [运算符 变量3]
和基础运算一样 可以使用运算符 即加减乘除 + 加号 - 减号 *乘法 /除法 %取余
例如
在这里插入图片描述

常在shell使用的运算表达式有4种,
i=KaTeX parse error: Undefined control sequence: \* at position 11: (expr 12 \̲*̲ 2) 这种为上图所示的 i…((12 * 8))
i=$[12 * 8]
let i=12*8

特殊的shell变量

环境变量

由系统提前创建,用来设置用户的工作环境 配置文件为/etc/profile,~/.bash_profile
常见的环境变量由 PWD PATH USER SHELL HOME
其中变量PATH表示可执行程序的默认搜索路径
在这里插入图片描述
在这里插入图片描述
将root用户目录添加到搜索路径 输出为全局变量。

位置变量

用$n表示,n为1-9的数字 例如$1为第一个位置参数。

预定义变量

Linux运维实例 高效运维的工具--shell脚本_第11张图片

浮点运算

bash不支持浮点运算,需要借助bc和awk才可以进行计算
但bc只可以输出小数点后两位,aw可以输出6位。
在这里插入图片描述

你可能感兴趣的:(shell,linux)