1.什么是shell?shell script是什么?
shell是脚本中命令的解释器(文字接口的shell)
shell script(程序化脚本)是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,搭配正规表示法、管线命令与数据流重导向等功能,已达到我们所想要的处理目的
2.shell脚本的意义
- 记录命令执行的过程和执行逻辑,以便以后重复执行
- 脚本可以批量处理主机
- 脚本可以定时处理主机
3.如何创建脚本
#!/bin/bash
幻数,声明这个脚本是用什么命令解释器运行的,比如是bash解释器,就在#!后写上bash文件在系统中的位置/bin/bash
vim自动添加脚本首部
调用方式有两种:
第一种是按某个快捷键去调用
第二种是自动调用
"map <F4> ms:call WESTOSTITLE()<cr>'s ## "表示此行被注释掉,映射F4快捷键去调用WESTOSTITLE()函数,<cr>'s表示结尾固定格式
autocmd BufNewFile *.sh,*.script call WESTOSTITLE() ##自动调用需满足两个条件:文件状态(新建)、以.sh或.script结尾的文件
func WESTOSTITLE()
call append(0,"###############################################") ##call表调用,0代表的是第一行,后边所跟是第一行显示的内容
call append(1,"# Author: lee")
call append(2,"# Version: ")
call append(3,"# Create_Time: ".strftime("%Y/%m/%d")) ##自动采集时间:strftime是vim内建的一个时间戳采集器
##"."表示前后两个字符串是独立的,用空格隔开
call append(4,"# Mail: lee@westos.org")
call append(5,"# Info: ")
call append(6,"# ")
call append(7,"################################################")
call append(8,"") ## ""表示空行
call append(9,"#!/bin/bash")
endfunc
在vim编辑器的配置文件中做此动作
测试
新建一个".sh "结尾的文件就会自动添加脚本首部信息
4.如何执行shell脚本
1)手动在环境中开启指定解释器
sh script.sh
指定sh shell去调用脚本,不用脚本中所写的幻数(即#!/bin/bash)
在当前的bash shell下开启了一个子shell sh,运行脚本中的所有命令
没有用解释器/bin/bash运行脚本,由外部的sh调用了脚本的所有命令
2)直接在当前环境中运行shell中的指令,不开启新的shell
source script.sh
. script.sh
在当前环境开启一个新的shell是为了去在纯净的环境中执行脚本当中的命令
在当前的shell里可能被设置过,环境纯净度不是特别高,可能会对实验效果有所影响
3)开启脚本中指定的shell并使用此shell环境运行脚本中的指令
chmod +x script.sh
/xxx/xxx/script.sh ##绝对路径下执行脚本
./script.sh ##相对路径下执行脚本
5.如何对脚本进行调试(脚本追踪)
sh -x newtest.sh
" + " ##运行指令
不带" + " ##命令运行的输出
举例:
在执行脚本中cat命令时,卡在那了,需要我们手动输入一个可cat文件,或者在脚本中直接添加一个可以cat的文件,脚本中的命令就可以依次执行到结束(这里我在脚本中添加一个可cat得/etc/shells文件供命令执行)