Shell编程规范与变量

308 阅读3分钟

Shell脚本的概念

将要执行的命令按顺序保存到一个文本文件

给该文件可执行权限

可结合各种Shell控制语句以完成更复杂的操作

Shell脚本应用场景

重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行

Shell的作用— 命令解释器,“翻译官” 介于系统内核与用户之间,负责解释命令行

image.png

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

20220823171632.png

shell脚本的作用

自动化运维

批量化重复操作可以编写脚本结合计划任务自动周期运行

减轻管理员工作量

提高处理文本文件的速度

避免配置出错

shell 可针对linux系统做自动化运维和状态监控

python 可针对通过API接口对应用程序做数据的统计和分析

强类型 int string C c++ java GO

弱类型 shell python 解释性语言

shell 脚本代码申明解释器 #!/bin/bash 或省略

python代码 必须申明解释器 #!/usr/bin/python 或 #! + python执行文件的其他路径

创建shell脚本格式

#!/bin/bash 申明解释器

#xxxxxxxx 做脚本的注释信息

……………….. 代码块

执行脚本

1.会在脚本的子shell环境中执行脚本中的代码 使用绝对路径或者相对路径指定脚本的路径运行,要求脚本文件必须要有执行权限 x

指定shell程序来直接解释运行脚本 Bash 脚本文件 Sh

2.会在当前的shell环境中执行脚本里的代码操作,也就是脚本文件中的代码或者命令会影响当前shell环境 Source 脚本文件

image.png

执行添加权限

20220823173348.png

执行脚本文件

脚本文件路径(绝对路径与相对路径) ===>需要可执行权限

[root@localhost ~]# ./first.sh

sh(或bash) 脚本文件路径 ===>可以不需要执行权限

[root@localhost ~]# sh first.sh

source 脚本文件路径 ===>本身的路径会变化

[root@localhost ~]# source first.sh

重定向和管道

XXX | 如果管道符号右边的命令一定需要执行对象的命令,则管道符号 后面要有 xargs 命令来传递执行参数

20220823174012.png

20220823175953.png

20220823184112.png

实验混合输出

20220823184700.png

20220823185020.png

shell脚本变量

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

shell脚本给变量赋值的方式

自定义变量

变量名=变量值

20220824210333.png

read 获取标准输入的内容给 变量

双引号:允许通过符号引用其他变量值单引号:禁止引用其他变量值,符号引用其他变量值 单引号:禁止引用其他变量值,视为普通字符

20220824212225.png

read命令获取输入内容

方法一: read -p "提示信息"变量名 echo $变量名

方法二: echo -n"提示信息" read 变量名 echo $变量名

默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用。

可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

实例:测试局部变量和全局变量 20220824214622.png

整数变量的运算

格式:expr 变量1 运算符 变量2 [运算符 变量3]

运算符:+ 加法、-减法、*乘法、/除法、%取余

常见的运算表达式:(result代表自定义变量,可用任意代替)

result=$(expr 变量1 运算符 变量2)

result=$((变量1 运算符 变量2))

result=$[变量1 运算符 变量2]

let result=变量1 运算符 变量2

20220824214839.png

20220824215039.png

20220824215216.png

i++相当于i=[[i + 1]

i--相当于i=[[i - 1]

i+=1相当于i=[[i + 1]

环境变量

1.环境变量由系统提前创建,用来设置用户的工作环境,使用env命令可以查看到当前工作环境下的环境变量:

变量USER表示用户名称

HOME表示用户的宿主目录

LANG表示语言和字符集

PWD表示当前所在的工作目录

变量PATH表示可执行程序的默认搜索路径 20220824215433.png

image.png

echo $PATH #查看当前搜索路径

PATH="$PATH:/root" #将/root目录添加到搜索路径

export PATH="$PATH:/root" #输出为全局环境变量

设置永久有效:

echo 'export PATH=$PATH:/root' >> /etc/profile #将全局环境变量追加到/etc/profile中

只读变量

20220824215955.png