一、什么是 shell
- 1、 脚本中命令的解释器
电脑语言分为描述性语言和解释性语言
2、shell 脚本的意义
记录命令执行的过程和执行逻辑,以便以后重复执行
脚本可以批量处理主机
脚本可以定时处理主机
3、创建 shell 脚本
#!/bin/bash 叫做幻数(指定解释器),在脚本运行的时候会优先执行;此处并不是注释,是vim子配置文件中所写的程序运行的环境。
二、创建 shell 脚本
- 对于脚本的编写,除了需要调用的内容之外,还应当对于脚本信息有一个简单的说明;
可以在写脚本时自动加上对脚本的说明;
编辑子配置文件 ~./vimrc,
call:调用 ,append:添加, 0:第一行 1:第二行, endfunc :结束;
编辑test.sh文件,进入后按F4就会调用WESTOS函数,即可自动添加所设置的脚本信息;
“将该语句注释;
设定当新建立的文件,只要以.sh 或 .script结尾,都去调用WESTOS函数
对编写脚本时的缩进格式进行设定:
ts=2: 一个tab表示两个空格,ai: 自动缩进,et: 把tab 转换为空格,sw =2:缩进长度为2个空格;
此时当编辑新文件lee时,可以看到脚本设定的效果
继续编辑配置文件 ~/.vimrc,再增加几条对脚本的说明
设定成功,编辑westos.sh 文件可以看到效果
三、执行shell脚本
- 当脚本没有执行权限时;
(1)手动在环境中开启指定解释器:sh westos.sh
(2)直接在当前环境中运行shell中的指令不开启新的shell
source script.sh
. script.sh
- 当脚本有执行权限时;
可以使用绝对路径的方式运行脚本。(开启脚本中指定的shell并使用此shell环境运行脚本中的指令)
. 表示当前目录
- 三种运行脚本方式的区别;
编辑linux.sh文件,写入一个指令cat
ps f :显示进程信息,可以看到sh运行脚本的方式,会在当前shell中重新开启一个子shell
fg:将进程调入前台并结束进程后,用 . 的方式运行脚本,不会在当前shell中重新开启一个子shell
用 source 的方式运行脚本,不会在当前shell中重新开启一个子shell
用 绝对路径 的方式运行脚本,也会在当前shell中重新开启一个子shell ,综上,sh 和绝对路径的方式,都会开启子shell
四、脚本的调试
- 编辑脚本内容,将cal 改为cat ,此时由于没有指定输出,故运行时会卡住
sh -x /mnt/westos.sh
加号 :运行指令
不带+ :命令运行的输出,可以看到cat指令没有输出
- 脚本练习:
1、
host_messages.sh 显示当前主机的名称,ip登陆当前主机的用户
hostname: xxxxx
ipaddress: xxxx.xxxx.xxx.xxx
username: root - 使用以下命令可以查看相关信息
env查看内建变量
脚本内容以及运行结果如图
也可以使用一条命令编写脚本
2、clear_log.sh 执行次脚本后可以清空日志 - 脚本内容及运行结果如图:
注意:只有root用户才能清空日志,$0表示脚本本身
此时脚本内容已被清空
测试切换到we用户