目录
一、shell脚本
1.shell脚本的作用,shell解释器的作用
1)shell脚本的作用
自动化运维使用
批量化重复操作使用脚本代替
2)shell解释器的作用
Linux系统默认使用的bash命令解释器
负责接收用户输入的命令提交CPU判断执行
2、脚本的基本结构和执行长见的方式
1)脚本的结构
[root@centos01 ~]# vim test.sh | 脚本后缀文件*.sh |
#!/bin/bash | 声明 |
#E-mail:821409986@qq.com | 脚本的描述和写脚本的联系方式 |
脚本执行的命令 |
2)运行脚本的方式
[root@centos01 ~]# sh test.sh | 使用sh命令运行 |
[root@centos01 ~]# ./test.sh | 在当前位置运行脚本 |
[root@centos01 ~]# source ./test.sh | source命令运行脚本 |
3、管道符和重定型基本输入输出
1)基本的输入输出
标准的输入:接收或者读取用户输入的数据<
标准的输出:将数据显示在屏幕或者文件中>,追加>>
错误输出:错误输出可以显示在屏幕或者特定文件中,2>错误输出
混合输出:不管是正确或者错误都输出到文件中,&>
2)管道符|
把前一个命令执行的结果,变成后一个命令处理的对象
二、环境变量的基本使用
1、变量的类型
1)自定义变量
管理员手动创建,根据需要自己定义
2)环境变量
维护系统使用
不需要管理员创建系统自动创建
3)位置变量
命令行给脚本传递程序参数使用
4)预定义变量
bash预定义好的特殊变量
用户不能修改
2、配置自定义变量
1)创建变量,变量名字是a变量值为10
2)查看变量值两种方法
[root@shell ~] a=10
[root@shell ~] echo $a
10
[root@shell ~] expr $a
10
3、变量常见赋值的符号
1)双引号,允许通过$符号引用其他变量值(强引用)
2)单引号,禁止引其他变量值(弱引用)
[root@shell ~]# a=5
[root@shell ~]# b=10
[root@shell ~]# echo '$a $b'
$a $b
[root@shell ~]# echo "$a $b"
5 10
3)反撇,命令替换提取命令执行的结果
[root@centos01 ~]# aa=`netstat -anptu | grep 22`
[root@centos01 ~]# echo $aa
4)read将输入的内容赋值给特定的变量名
[root@centos01 ~]# read -p "请输入特定的目录:" insert
请输入特定的目录:/boot
[root@centos01 ~]# echo $insert
/boot
5)定义全局环境变量子shell可以应用
[root@centos01 ~]# export a=100
[root@centos01 ~]# echo $a
4、整数变量运算符
1)创建的运算符
+:加法
-:减法
\*:乘法
/:除法
%:求模(余)运算
2)运算基本的应用
[root@centos01 ~]# a=100
[root@centos01 ~]# b=200
[root@centos01 ~]# expr $a + $b
300
[root@centos01 ~]#expr 1 + 1
[root@centos01 ~]#echo $[1+1]
[root@centos01 ~]#echo “scale=2;1.25*1.25”|bc
[root@centos01 ~]#free
total used free shared buff/cache available
Mem: 1862792 175828 1159252 9852 527712 1527884
Swap: 2097148 0 2097148
[root@centos01 ~]#vim mom.sh #用脚本查看内存使用率
#!/bin/bash
mt=$(free | awk 'NR==2{print $2}') #NR==n 表示查看第n列,print $2以空格(默认)为分隔符读取第二个字符串
mu=$(free | awk 'NR==2{print $3}')
muu=$(expr $mu \* 100 / $mt)
echo $muu
[root@centos01 ~]#sh mom.sh
9
#或者
[root@shell ~]# free | awk 'NR==2{print int($3/$2*100)"%"}'
9%
3)花括号的用于区分符号
[root@shell ~]# ab=benet
[root@shell ~]# echo ${ab}0.10.1 #相当于空格
benet0.10.1
5、特殊变量
1)环境变量
系统创建
2)位置变量
提供9个位置$n(n代表1--9)
3)预定义变量
$#:命令行中位置参数
$*:所有位置参数
$?:记录的脚本执行状态0表示成功,非0表示错误
$0:执行脚本的进程程序名字
三、测试
1、非交互创建用户和密码
[root@shell ~] useradd user01
[root@shell ~] echo "123456" |passwd --stdin user01
更改用户 user01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
2、配置环境脚本(关闭防火墙、创建挂载目录并挂载)
[root@shell ~] vim yum.sh
#!/bin/bash
echo "正在关闭防火墙和安全......"
systemctl stop firewalld
setenforce 0
iptables -F
echo "关闭完成!"
sleep 2
echo "创建挂载点......"
read -p "选择一个挂载目录:" x
echo "创建挂载目录"
mkdir $x
echo "挂载光盘......"
mount /dev/sr0 $x &> /dev/null
echo "创建yum文件......"
cd /etc/yum.repos.d/
echo "[yum]
name=yum repo
baseurl=file://$x
enabled=1
gpgcheck=0" >yum.repo
echo "清楚yum仓,重建yum源......"
yum clena all &>/dev/null && yum makecache fast >/dev/null
echo "操作成功!! "
[root@shell ~] sh yum.sh
正在关闭防火墙和安全......
关闭完成!
创建挂载点......
选择一个挂载目录:cdrom
创建挂载目录
挂载光盘......
创建yum文件......
清楚yum仓,重建yum源......
操作成功!!