linux 运维高级脚本生成器,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 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第1张图片

图为Linux的几种默认shell环境

二、编写shell脚本

1.shell脚本格式

在Linux中编写shell脚本,是用vim文件编辑器对文件进行编辑 每行一条命令去执行

echo是向文本框输入一个文本 前一行跟上指令,

6a042517247919a87576b905dcc45b09.png

创建文件

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第2张图片

写入脚本

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第3张图片

给写的脚本文件提取相应的权限 否则无法执行文件。

4d67f92770c6c94e1a6d9ee7586f2761.png

执行脚本 echo输出结果。

2.脚本文本的权限

前面说过 如果文件没有执行权限是无法执行 但权限给与不止一种方法,方法一共有四种

第一种 就如上图说的方法 用chmod +x 来给与权限

这里要注意路径 绝对路径和相对路径

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第4张图片

第二种 也是使用chmod 777来给与权限 但是777权限过大 可以根据实际情况来给与 一般给个644即可

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第5张图片

第三种 使用shell来解释脚本 不要求文件要求x的权限

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第6张图片

第四种 使用source脚本文件路径 直接执行

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第7张图片

3 管道符号和重定向

交互式硬件设备有三种交互模式 标准输入 标准输出 标准错误

标准输入是从该设备接收用户输入的数据。设备文件为/dev/stdin 文件描述编号0 默认设备为键盘。

标准输出是通过该设备向用户输出数据。设备文件为/dev/stout 文件描述为1 默认设备为显示器。

标准错误通过该设备报告执行出错信息。设备文件为/dev/sterr文件描述为2 默认为显示器。

管道符号在之前的Linux就使用过 配合命令来进行过滤

79f4c535288bc869d0b3f8fa4e373add.png

将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中使用多个管道。

重定向操作

重定向输入 操作符 重定向输入操作符>表示将标准输出结果 保存到指定的文件,并且覆盖原有内容. >>表示将标准输出结果追加到指定的文件的尾部,不覆盖原有内容

标准错误输出 2> 将错误信息保存到指定的文件,并且覆盖原有内容。2>>将错误信息 追加到指定的文件的尾部,不覆盖原有内容。

混合输出操作符 &>将标准输出,标准错误保存到同一文件中

2>&1将标准错误输出重定向到标准输出。

3348d1d9b994cd7511204e1a1252910b.png

例如使用echo把密码重定向到密码文件

0fb24f7315c86f1bb01da6ce29279b66.png

也可以反向去提取密码来修改密码。

三 shell中的变量

1 变量的作用

用来存放系统和用户需要使用的特定参数(值)

变量由变量名和变量值组成

变量名使用固定的名称,由系统预设或者用户自定义

变量值能够根据设置,系统环境的变化而变化

2变量的类型

自定义变量:由用户自己定义 修改和使用

特殊变量:环境变量,只读变量,位置变量,预定义变量。

环境变量由系统维护,用于设置工作环境

位置变量通过命令行给脚本程序传递参数

预定义变量:bash中内置的一类变量,不可直接修改。

3 定义一个变量

变量的格式为变量名=变量值

变量命名规则:以字母或者下划线开头,区分大小写。

f95ace7aa09aec3b2f7e778fd23a0311.png

a8007370831a83a6a67babf386da7c9a.png

echo输出变量 可以输出多个变量。

自定义变量

自定义变量是使用双引号来赋值

“”允许通过$符号引用其他变量值

cf95f0472252aefbf37a77535744d471.png

‘’禁止引用其他变量值,$视为普通字符

96aa252607f5b59bcb149905329179df.png

反撇号表示命令替换,提取命令执行后的输出结果。

7a95795a2dc5f80396ff8f3b5daa61f7.png

也可以加括号

61fcacc559493f0f01ae4482121cd216.png

键盘输入为变量赋值

方法有2种

第一种是在shell环境中直接去赋值

read -p "要输出的信息"变量名

echo $变量名

e1148d8ea3624b3a56dbc9fad524bcf2.png

根据提示信息来输出变量

第二种 编写一个脚本 用脚本来执行

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第8张图片

04681ef02291615ace3aaee332221439.png

4变量的作用范围

在默认的环境下,新定义的变量只在当前的shell环境生效,因此称为局部变量。当进入一个子程序或新的子shell环境,局部变量就无法生效。

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第9张图片

pstree可以查看当前的bash环境

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第10张图片

此处切换了bash环境 那么之前的变量就不可以生效了

68bb4273df813c3da5e092acabddc124.png

变量已失效

如果需要变量再次生效就需要将变量导出为全局变量

使用export指令 格式有两种

export 变量名

export 变量名=变量值

6b2250bb72824c2dd66113de8a43430b.png

如图 切换了bash环境变量任然生效。

整数变量的计算

用于计算 格式为expr 变量1 运算符 变量2 [运算符 变量3]

和基础运算一样 可以使用运算符 即加减乘除 + 加号 - 减号 *乘法 /除法 %取余

例如

42a2201255aa6a6ea1e75cde9e7c5126.png

常在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表示可执行程序的默认搜索路径

9b959f066434573d8ee44737928c2110.png

cee4b3f91f9a733ccf095e411a75aede.png

将root用户目录添加到搜索路径 输出为全局变量。

位置变量

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

预定义变量

linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本_第11张图片

浮点运算

bash不支持浮点运算,需要借助bc和awk才可以进行计算

但bc只可以输出小数点后两位,aw可以输出6位。

6469aa6506294a317094f0bd7c8181ca.png

你可能感兴趣的:(linux,运维高级脚本生成器)