shell脚本的基础知识
一、什么是shell
脚本命令解释器的一种
二、shell脚本的意义
1.记录命令执行的过程和执行逻辑,以便以后重复执行
2.脚本可以批量处理主机
3.脚本可以定时处理主机
三、如何创建shell脚本
#!/bin/bash ##幻数
首先编写 vim ~/.vimrc #作用:自动生成解释
vim自动添加脚本首部
vim ~/.vimrc #编写内容
"map <F4> ms:call WESTOS()<cr>"s
autocmd BufNewFile *.sh,*script call WESTOS()
func WESTOS()
call append(0,"############################")
call append(1,"#Create_Time: ".strftime("%Y/%m/%d")) #自动获取年月日
call append(2,"# Author: jwl") #设置记录编写用户
call append(3,"############################")
call append(4,"")
call append(5,"#!/bin/bash")
endfunc
autocmd BufNewFile *.sh setlocal sw=2 ts=2 et ai
##测试:创建test.sh 脚本文件,自动生成解释
vim test.sh
############################
#Create_Time: 2021/06/13
# Author: jwl
############################
#!/bin/bash
四、如何执行shell脚本
vim jwl.sh
############################
# Create_Time: 2021/06/13
# Author: jwl
# 版本:1.0
############################
#!/bin/bash
echo "哈哈"
firewall-cmd --list-all
1.手动在环境中开启指定解释器
sh script.sh #调用目录下的文件
2.直接在当前环境中运行shell中的指令不开启新的shell
source script.sh
. script.sh #直接脚本文件所在目录,直接调用
3.开启脚本中指定的shell并使用此shell环境运行脚本中的指令
chmod +x script.sh
/xxx/xxx/script.sh
./script.sh
五、.如何对脚本进行调试
sh -x /mnt/westos.sh #查看脚本具体运行过程
- ##运行指令
不带+ ##命令运行的输出
sh -x /mnt/jwl.sh
六、脚本练习:
1、host_messages.sh 显示当前主机的名称,ip登陆当前主机的用户
hostname: xxxxx
ipaddress: xxxx.xxxx.xxx.xxx
username: root
vim host_messages.sh #编写脚本文件
cat host_messages.sh #显示文件内容
############################
# Create_Time: 2021/06/13
# Author: jwl
# 版本:1.0
############################
#!/bin/bash
echo -e "hostname:\t$HOSTNAME"
echo -e "ipaddress:\t$(ifconfig ens3 | awk '/inet\>/{print $2}')"
echo -e "username: \t$USER"
sh host_messages.sh #运行脚本
hostname: westosa.westos.org
ipaddress: 172.25.254.119
username: root
2、clear_log.sh 执行次脚本后可以清空日志
vim clear_log.sh #编写脚本文件
cat clear_log.sh #显示脚本文件内容
############################
# Create_Time: 2021/06/13
# Author: jwl
# 版本:1.0
############################
#!/bin/bash
[ "$USER" != "root" ]&&{
echo "用户$0权限不够!!!"
exit
}
[ ! -e "/var/log/messades" ] &&{
echo "没有日志"
exit
}
> /var/log/messades && {
echo "系统服务常规信息日志清理完成"
}
sh clear_log.sh #运行脚本