Shell编程规范与变量


完成自动化运维工作,批量完成重复操作,结合crontab完成周期性任务

1.Shell脚本概述

Shel脚本的概念:将要执行的命令按顺序保存到一个文本文件;给该文件可执行权限;可结合各种Shell控制语句以完成更复杂的操作。
Shell脚本应用场景:重复性操作;交互性任务;批量事务处理;服务运行状态监控;定时任务执行...

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

(2)用户登录Shell
登录后默认使用的Shel程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别


sh:UNIX最初使用的 shell,已经被bash所替换。
bash:基准于GNU的框架下发展出的Shell,是 sh 的扩展。
csh:语法有点类似于c语言的Shell。
tcsh:整合了csh,提供更多的功能。
nologin:奇怪的shell,这个shell可以让用户无法登录主机。

2.Shell编程规范

(1)编写脚本代码

使用vim文本编辑器
每行一条Linux命令,按执行顺序依次编写 vim XXX.sh
赋予可执行权限,使脚本具有可执行属性chmod +x XXX.sh

编程语言类型:
编译型:C C++ JAVA GO 代码文件需要先编译后,程序才能执行
解释型:SHELL PYTHON 代码是边解释边运行

(2)脚本编写结构

(1)申明解释器
#!/bin/bash
#!/bin/python

(2)编写注释信息:要以 # 号开头表示为注释,被注释的语句在脚本运行时是不会被执行的。

(3)编写执行语句:按照顺序编写要执行的命令语句。

(3)Shell脚本的运行

(1)bash 或 sh 指定脚本文件运行,可无执行权限
绝对路径或相对路径指定脚本文件运行,要求有执行权限
以上两种方式都是在子Shell环境中执行脚本

(2)source 或 . 指定脚本文件运行,可无执行权限
会在当前shell环境中执行脚本

3.重定向与管道

(1)交互式硬件设备

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

(2)重定向操作

命令 > 文件 2>&1  效果等效于混合输出
ls -lh > test.txt 2>&1
ls -lh             标准输出       到屏幕  1 →屏幕
ls -lh > test.txt  重定向输出     到 test.txt   1 → test.txt
2>&1               错误输出 重定向到 标准输出   2 → 1

(3)管道操作“|”

将左侧的命令输出结果,作为右侧命令的处理对象

4.Shell脚本变量

变量的作用:用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
变相的类型:
自定义变量:由用户自己定义、修改和使用
特殊变量:环境变量,只读变量,位置变量,预定义变量

(1)自定义变量

(1)定义一个新的变量

变量名以字母或下划线开头,区分大小写,建议大写
变量名=变量值

查看变量的值
echo $变量名


(2)赋值时使用引号

双引号 "$XXX"   会把$看作为引用XXX变量值的特殊符号
单引号 '$XXX'   会把$看作为一个普通字符,不会引用变量的值
反撇号 `...`    命令替换,提取里面的命令执行后的结果,效果等于$(...)

read -p "提示信息" 变量名 #从键盘输入中获取变量值


(3)设置变量的作用范围

默认情况下自定义的变量只能在当前shell环境中有效
export 变量名
export 变量名=变量值
导出为全局变量

让自定义的变量在所有shell环境中有效的方法:
(1)在 /etc/profile 文件中定义 export 变量名=变量值 导出为全局变量
source /etc/profile 立即生效 或 重新登录系统自动生效

(2)在 /etc/bashrc 文件中定义 变量名=变量值
切换 shell 环境自动生效

(4)整数变量的运算

expr 变量1 运算符 变量2

运算符
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算
% 求模(取余)运算

整数运算
echo $(expr 整数1 运算符 整数2)   $(expr $变量1 运算符 $变量2)   +  -  \*  /  %
echo $[整数1 运算符 整数2]        $[变量1 运算符 变量2]          +  -  *  /  %   
echo $((整数1 运算符 整数2))      $((变量1 运算符 变量2))        +  -  *  /  %   

let a=10+5
let a++    相当于   a=$[a+1]
let a--    相当于   a=$[a-1]
let a+=2   相当于   a=$[a+2]





浮点数运算
echo '4.5+2.1' | bc
awk 'BEGIN{print 4.5+2.1}'

(2)特殊变量

(1)环境变量

由系统提前创建,用来设置用户的工作环境
配置文件:/etc/profile、~/.bash_profile
env #查看当前shell

常见的环境变量
PWD 当前所在的工作目录
PATH 可执行程序的默认搜索路径
USER 用户名称
HOME 用户的宿主目录
HISTSIZE 历史记录


(2)只读变量

用于变量值不允许被修改的情况
readonly
只读变量不可以被重新赋值
只读变量不可以被删除

(3)位置变量

(4)预定义变量

当天日期 date +"%Y%m%d"  
明天日期  date -d "1 day" +"%Y%m%d"              
昨天日期  date -d "-1 day" +"%Y%m%d"    
当月第一天  date +"%Y%m01"                
下个月第一天  date -d "1 month" +"%Y%m01"  
当月最后一天  date -d "$(date -d "1 month" +"%Y%m01") -1 day" +"%Y%m%d"   



posted @ 2024-05-08 00:57  无敌小鲁班  阅读(9)  评论(0编辑  收藏  举报