一、shell 脚本
1.基本概念
shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件 中,进行处理业务逻辑,脚本不用编译即可运行,它从一定程度上减轻 了工作量,提高了工作效率,还可以批量、定时处理主机,方便管理员 进行设置或者管理。
可以简单将shell看作是用户和操作系统之间的命令解释器
2.shell 脚本编写注意事项
shell脚本名称命名一般为英文、大写、小写、后缀以.sh结尾
不能使用特殊符号、空格 名称要写的一眼可以看出功能,也就是顾名思义
shell脚本首行需要#!/bin/bash开头
shell脚本变量不能以数字、特殊符号开头,可以使用下划线 _,但不能 用破折号——
Shell 的返回值:运行一条命令,都会有一个返回值。 0 代表执行正常,非 0 代表命令执行异常。
3.shell 脚本的构成
(1)脚本声明
(2)注释信息
(3)可执行语句
一、简单脚本的创建和运行
1.编写脚本
[root@shell ~]# vim hello.sh
2.运行脚本
方法一:bash
[root@shell ~]# bash hello.sh
hello world!
方法二:sh
[root@shell ~]# sh hello.sh
hello world!
方法三:source
[root@shell ~]# source hello.sh
hello world!
方法四:x先赋予x权限,然后 ./
[root@shell ~]# chmod +x hello.sh
[root@shell ~]# ./hello.sh
hello world!
二、编写nginx安装脚本
用shell脚本自动化部署安装nginx
方法一:
第一步:创建一个shell目录
[root@shell ~]# mkdir shell
进入创建的目录
[root@shell ~]# cd /root/shell/
第二步:编写脚本
[root@shell shell]# vim install_nginx.sh
运行脚本
[root@shell ~]# bash nginxinstall.sh
三、变量
1.变量命名规则:
必须由大写字母、小写字母、下划线、数字,并且首字 母不能是数字
2.变量值的类型:
值的类型会分为整型、浮点型、字符串型、布尔型等, 而且使用变量需要指定类型Shell 默认的变量类型都是字符串,无需指 定类型
3.变量的分类
(1)自定义变量
由用户自己定义、使用和修改
变量名=值中,等于号=之前和之后不能有空格
(2)环境变量
由系统维护,用于设置工作环境
$PWD
$SHELL
$USER
$PATH
PATH变量用于设置可执行程序的默认搜索路径,可以修改全局变 量文件/etc/profile 或修改某用户家目录下的~/.bash_profile文件永久改 变环境变量。
[root@localhost ~]# env # 查看所有环境变量
(3)位置变量
通过命令行给脚本程序传递参数 (也属于预定义变量)
为了在使用Shel脚本程序时,方便通过命令行为程序提供操作参数, Bash引入了位置变量的 概念位置变量有 ,n,n为1~9之间的数字
$0:第一个字段表示命令名或脚本名称
$1:脚本要处理的第一个参数
$2:脚本要处理的第二个参数
Shell脚本最多可以直接处理9个参数
( 4 )预定义变量
Bash中内置的一类变量,不能直接修改
预定义变量是Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建 新的预定义变量,也不能直接为预定义变量赋值。
$*:将所有参数作为整体
$@:单个参数的组合,每个参数占一行
$0:保存了脚本名称
$?:保存命令或脚本的执行状态码
$#:保存脚本要处理的参数的个数
4 、变量的定义与输出
( 1 )定义一个新的变量
格式:变量名 = 变量值
注意:变量名必须以字母或下划线开头,严格区分大小写
(2)变量符号运用
双引号:允许通过 $ 符号引用其他变量值
单引号:禁止引用其他变量值, $ 视为普通字符
反撇号: 或 $(): 命令替换,提取命令的执行结果
(3)输入和输出
输入格式: read [-p " 显示的提示信息 "] 变量名
输出格式: echo $ 变量名
5 、变量的作用范围
默认情况下,新定义的变量只在当前 Shell 环境中有效,因此称为局部变量。当进入子程序或新的子shell 时,局部变量将无法再使用。
为了使用户定义的变量在所有子 Shell 环境中能够继续使用,减少重复设置工作,可以通过内部命令export 将指定的变量导出为 “ 全局变量 ” 。
格式 1 : export 变量名
格式 2 : export 变量名 = 值
6、变量的数学运算
(1)整数运算
格式: expr 变量 1 运算符 变量 2 运算符 变量 3....
运算符: + - * / ( + - × ÷ )
(2)精度计算
精度计算前,先安装bc这个软件才可进行,否则只能进行整数运算
yum -y install bc
四、条件判断语句
1 、 if 单分支语句
if 条件判断 ; then
条件成 ⽴ 执 ⾏ 的命令 ( 可以有多个命令,命令执行方式为逐行执行要么全执行,要么全不执行 )
fi
2 、 if 多分支语句
if 条件判断 ; then
条件成 ⽴ 执 ⾏ 的命令 ( 可以有多个命令 )
else
条件不成 ⽴ 执 ⾏ 的命令 ( 可以有多个命令 )
fi
条件判断:可以有数字判断、字符串判断、⽂件判断等
(一)数字判断
1 、格式
-eq : equal ,等于,一般用于 [ $? -eq 0 ] ,也就是判断上条命令返回值等于 0 ,直接数字 -eq 数
字也可以 equals
-ne : not equal ,不等于,一般用于 [ $? -ne 0 ] ,判断上条命令返回值不等于 0
-gt : greater than ,大于
-ge : greater or equal ,大于或等于
-lt : less than ,小于
-le : less or equal ,小于或等于
2.创建简单的数字判断脚本
第二步:执行脚本
[ro
(二)字符串判断
1 、格式
[ 字符串 1 == 字符串 2 ] 字符串内容相同
[ 字符串 1 != 字符串 2 ] 字符串内容不同
[ -z 字符串 ]
字符串内容为空
[ -n 字符串 ]
字符串内容不为空
2.案例
( 1 )创建简单的字符串判断脚本
[root@localhost test]# vim zifu.sh
#!/bin/bash
read -p "请输⼊账号:" name
if [ "$name" == "admin" ];then # 字符串判断需要加双引号
echo "欢迎您,$name!"
else
echo "系统未查询到此账号,请您重新输⼊!"
fi
:wq
[root@localhost test]# sh ./zifu.sh
请输⼊账号:admin
欢迎您,admin!
[root@localhost test]# sh ./zifu.sh
请输⼊账号:ads
系统未查询到此账号,请您重新输⼊!
[root@localhost test]#
( 2 )创建 rpm 查询软件是否安装的脚本