六、shell脚本编程
6.1 简介
-
也是一种编程语言,最大的特点的就是简单
-
在shell中,其实就是包含了各种linux命令
-
这个保存了命令的文件就是shell脚本
-
通过shell脚本可以实现批量执行linux命令
6.2 写shell脚本的流程
第一步:用 vi/vim 去创建一个后缀是.sh的文件
vi是Linux的文本编辑器
vim是vi的升级版,在vim中可以实现内容的高亮显示
vim可能没有安装,可以执行 yum install vim 进行安装
注意:
1)Linux中文件的后缀,对于文件的属性,没有任何影响
2)因此,vi创建的shell脚本的后缀可以不是.sh
# 例如,创建一个文件 new.sh [root@localhost ~]# vim new.sh
第二步:在sh文件中写入指令
第一行固定写法:#!/bin/bash
从第二行开始,写你想要执行的命令
# 要求:在shell脚本中, # 1)在home下创建一个文件a.txt touch /home/a.txt # 2)删除tmp下的所有的文件 rm -rf /tmp/* # 3)创建一个用户tom useradd tom # 4)查看etc下有哪些文件 ls /etc
shell脚本的内容
#!/bin/bash touch /home/a.txt rm -rf /tmp/* useradd tom ls /etc
第三步:给脚本赋予执行权限
[root@localhost ~]# chmod +x new.sh
第四步:执行脚本
[root@localhost ~]# ./new.sh
6.3 shell流控制
6.3.1 循环
-
周而复始执行一个命令
格式
for 变量 in 列表 do done
for的执行流程
1)量列表中的元素,拿出一个赋值给变量,然后执行do和done之间的代码
2)do和done之间的代码执行完成后,会再次去列表中取出一个元素,然后执行do和done之间的代码
3)do和done之间的代码执行完成后,会再次去列表中取出一个元素,然后执行do和done之间的代码
4)当列表中的元素用尽了,就会结束循环,结束循环后,才会去执行done后面的代码
案例:
#!/bin/bash for num in 1 2 3 4 5 6 7 8 9 10 do echo "hello" echo "a" done echo "over" 执行流程 首先 将 1 赋值给 num,然后输出 hello 和 a 输出后,再去将2 赋值 num,然后输出 hello 和 a 输出后,再去将3 赋值 num,然后输出 hello 和 a 输出后,再去将4 赋值 num,然后输出 hello 和 a ... 输出后,再去将10 赋值 num,然后输出 hello 和 此时列表结束,此时会执行done后面的内容,也就是输出over
6.3.2 判断
-
只有当符合条件的时候,才会执行命令
格式1
if [ 判断条件 ];then 语句 fi # 这种格式称之为单分支格式 # 中间的语句,必须当条件满足的时候,才会执行
格式2
if [ 判断条件 ];then 语句1 else 语句2 fi # 这种格式称之为双分支格式 # 中间的语句1,必须当条件满足的时候,才会执行 # 当条件不满足的时候,会去执行语句2
案例:
#!/bin/bash # 指定解释器 m=3 # 定义变量,变量名是m,变量中的值是3 n=5 # 定义变量,变量名是n,变量中的值是5 if [ $m -gt $n ];then # 条件是m中的值大于n中的值。变量名前必须加上$才能获得变量中的值 echo "ok" # 当条件成立,输出这里的内容 echo "$m" else echo "error" # 当条件不成立,输出这里的内容 echo "$n" fi
6.4 shell脚本和计划任务
案例:要求每天晚上23点55分执行如下操作
1)在home下创建一个文件a.txt touch /home/a.txt
2)删除tmp下的所有的文件 rm -rf /tmp/*
3)创建一个用户tom useradd tom
4)查看etc下有哪些文件 ls /etc
第一步:将需要完成的操作写入到脚本中
-
见上面
第二步:将脚本放到home下,脚本名叫job.sh
-
操作过程-略
第三步:创建计划任务,在规定的时间去执行操作
55 23 * * * bash /home/job.sh