初识shell——shell脚本的基础知识

1.什么是shell

脚本中命令的解释器,可以把我们编写的命令解释成系统可以识别的语言,然后系统再去执行

2.shell脚本的意义

1.记录命令执行的过程和执行逻辑,方便以后重复执行
2.脚本可以批量处理主机
3.脚本可以定时处理主机

3.如何创建shell脚本

#!/bin/bash 	

 #幻数,指定系统当中的解释器(cat /etc/shells命令可以查看系统中所有的解释器),
 是脚本中最先执行的命令,开启环境,下面的命令都在该环境中执行

在这里插入图片描述
常规的脚本中,最前面几行都会写一些注释,但是每个脚本都要自己写注释的话会很麻烦,所以我们可以修改vim的配置文件,使得每次写脚本时自动添加注释

vim /etc/vimrc		#编辑vim的配置文件,使得每次在编写脚本时自动添加脚本首部

在配置文件最后添加的文件内容:
map <F4> ms:call WESTOSTITLE()<cr>'s			
#调用函数方式一,映射快捷键,按F4时会执行下面的函数
autocmd BufNewFile *.sh,*.script call WESTOSTITLE()
#调用函数方式二,文件是新的并且以.sh或.script结尾时,自动调用
func WESTOSTITLE()				#表示函数
 call append(0,"#############################################")	#0表示第一行
 call append(1,"# Author: lee")							#call表示调用
 call append(2,"# Version: ")
 call append(3,"# Create_Time: ".strftime("%Y/%m/%d"))	#自动采集时间
 call append(4,"# Mail: [email protected]")
 call append(5,"# Info: ")
 call append(6,"# ")
 call append(7,"##############################################")
 call append(8,"")
 call append(9,"#!/bin/bash")
endfunc

在这里插入图片描述
执行效果:
在这里插入图片描述

4.如何执行shell脚本

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(注意:rhel8中是/script.sh,没有点)

注意:这三种方式是有区别的,如下:
方式一:是用自己指定的shell,在执行的过程中不会调用脚本中的幻数,只是在当前的shell中开了一个子shell
在这里插入图片描述
方式二:开启新的shell是一个新的纯净的环境,如果不开启新的shell,就是在当前的shell中执行命令,当前的shell可能被设置过,并不是一个纯净的shell。
在这里插入图片描述
方式三:开启脚本中指定的shell并使用此shell环境运行脚本中的指令
在这里插入图片描述

5.如何对脚本进行调试

sh -x /mnt/westos.sh			#-x:显示运行的过程
+ 		#运行指令
不带+ 	#命令运行的输出结果

在这里插入图片描述

6.脚本练习

1、
ip_show.sh 网卡 显示当前的网卡名称
参考:
nmcli device status|awk '$2~/ethernet/{print $1}'

2
host_messages.sh 显示当前主机的名称,ip,登陆当前主机的用户
显示效果如下:
hostname: xxxxx
ipaddress: xxxx.xxxx.xxx.xxx
username: root
参考:
#!/bin/bash
  2 
  3 hostnamectl | head -n 1| cut -d " " -f 5,6
  4 
  5 [ -z "`ifconfig ens160 |awk '/inet\>/{print $2}'`" ] || {
  6         echo "ipaddress: `ifconfig ens160 | awk '/inet\>/{print $2}'` "
  7 }       
  8 
  9 echo "username: $USER"

3.
编辑脚本clear_log.sh 执行此脚本后可以清空日志
参考:
#!/bin/bash
[ "`whoami`"="root" ]||{
	echo "Error:Only root can run this scirpt!"
	exit			#只有root用户才可以
}
for log_name in $(awk '/./&&!/^#/&&!/^\$/&&$2~/^\/|^\-/{print $2}' /etc/rsyslog.conf | sed 's/-//g')
					#筛选日志文件
do
	> $log_name &&{
	echo $log_name is cleared
	}
done
###for语句

2、
在这里插入图片描述
结果:
在这里插入图片描述
3、
在这里插入图片描述
结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46138661/article/details/105429278