格式
#!/bin/bash
#!幻数 指定脚本用的命令解释器
执行脚本
sh
sh +x
1、为什么要学习shell编程?
Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,例如:自动备份、监控、自动安装服务
Shell编程是Linux运维人员必须要会编程语言。最简单的编程语言。
编程也是运维人员必须具备的本领:
Shell、python是运维人员必须具备的本领
2、什么是Shell?
shell就是一个解释器(翻译官),命令行的命令以及脚本都会通过shell解释,传给操作系统,处理后在输出给用户。
3、Shell的分类
/bin/sh、/bin/bash、/usr/bin/sh、/usr/bin/bash
4、CentOS7默认脚本是Shell
[root@zhang ~]# echo $SHELL
/bin/bash
5、什么是Shell脚本?
程序、命令放入文件里执行,这个文件称之为Shell脚本文件。
工作中最多的编程写脚本,存放在文件里。
二、变量
1.变量
方便脚本里面进行重复使用
命名规则
看见变量名称 识别变量作用
不能以数字开头
变量分类
局部变量(普通变量)
IP=10.0.0.200
time=2019-01-01
全局变量(环境变量)
系统创建
在整个系统中生效
大部分地方意思一样
一般是大写
特殊变量
\$? 数字 \$# \$*
2.局部变量(普通变量)
3.引号系列
4.特殊变量
5.局部变量和全局变量区别:
[root@m01 /server/scripts]# LIDAO=996
[root@m01 /server/scripts]#
[root@m01 /server/scripts]# echo $LIDAO
996
[root@m01 /server/scripts]# cat show.sh
#!/bin/bash
echo $LIDAO
[root@m01 ~]# sh show.sh \\执行脚本为空
[root@m01 ~]#
[09:17 root@m01 ~]# export LIDAONB \\添加全局变量
[09:22 root@m01 ~]# echo $LIDAONB
666
[09:22 root@m01 ~]# sh show.sh
666
6.局部变量和全局变量区别
https://www.processon.com/view/link/5a0e4380e4b06c8e10923353
7.awk的 -v 参数
[09:49 root@m01 ~]# x=10
[09:49 root@m01 ~]# y=99
[09:49 root@m01 ~]# echo $x
10
[09:49 root@m01 ~]# echo $y
99
[09:49 root@m01 ~]# awk 'BEGIN{print $x/$y}'
awk: cmd. line:1: fatal: division by zero attempted
[09:49 root@m01 ~]# awk -vn1=10 -vn2=99 'BEGIN{print n1/n2}'
0.10101
[09:51 root@m01 ~]# awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
0.10101
[09:51 root@m01 ~]# awk -vx=10 -vy=99 'BEGIN{print x/y}'
0.10101
[09:53 root@m01 ~]#
8.利用shell编译小型计算器
[10:18 root@m01 ~]# vim show.sh
#!/bin/bash
. /etc/profile
x=$1
y=$2
echo $1\+$2= ;awk -vx=$x -vy=$y 'BEGIN{print x+y}'
echo $1\-$2= ;awk -vx=$x -vy=$y 'BEGIN{print x-y}'
echo $1\*$2= ;awk -vx=$x -vy=$y 'BEGIN{print x*y}'
echo $1\/$2= ;awk -vx=$x -vy=$y 'BEGIN{print x/y}'
[10:19 root@m01 ~]# sh show.sh 5 6
5+6=
11
5-6=
-1
5*6=
30
5/6=
0.833333
知识有限暂不支持小数运算
9.特殊变量中简单判断参数个数:
10.判断目录存不存在,不存在就创建
三、判断语句
if判断句语法:单分支: 如果。。。那么就
if [ 表达式 ]
then命令
else
exit 退出
fi 果如
1.if语句格式:
if [ 表达式 ]
then命令
exit 退出
fi
2.对比两个数值大小
3.检查定时任务是否运行中
避免过滤的时候 过滤掉grep命令自己
四、循环语句
for语句
五、扩展:
read命令
从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)。
总结:
1.变量 特殊变量 $# $* $1 $0
2.判断与循环
服务脚本
任务:
批量添加用户设置随机密码 for循环实现
批量修改文件名字 for/rename
touch /oldboy/oldboy.txt 批量.txt修改为.jpg
未完待续....