1、什么是shell
shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
Shell脚本(Shell Script)又称Shell命令稿、程序化脚本,是一种计算机程序使用的文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。
2、shell的分类
2.1 图形界面shell
应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
2.2 命令行shell(/etc/shells)
Linux中有 bash 、 sh 、ksh 、 csh 、 zsh 等。
3、shell脚本的意义
我们可以通过shell脚本记录命令的执行过程,方便以后的重复执行;同时也可以通过shell脚本进行批处理多台主机,大大减少了工作量;当shell脚本和定时任务结合时,我们可以定时对主机进行处理。
4、如何创建一个shell脚本
通过 vim 编辑shell 脚本,此时只需要在此脚本前加入:#!/bin/bash(这里编写的是bash脚本)即可创建脚本,其中#!/bin/bash 叫做脚本的幻数;通俗的可以将其理解为注释器的启用功能,等于通过该命令告诉主机,接下来的文本要在那里执行,是什么文件。
同样我们在写shell脚本时,往往会添加一些说明,为了方便每次编写脚本都会添加,我们可以在/etc/vimrc的配置文件中进行设置。该语法为/etc/vimrc的语法。
例子如下:
ap <F4> ms:call ShellHead()<cr>'s ###快捷键设置
autocmd BufNewFile *.sh,*.script call ShellHead() ###当文件名结尾为.sh的自动添加
func ShellHead()
call append(0,"###############################################")
call append(1,"# Author: lee")
call append(2,"# Version: ")
call append(3,"# Create_Time: ".strftime("%Y/%m/%d"))
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
![](https://i-blog.csdnimg.cn/blog_migrate/1bd1356bc26355ff9f064eea7a2a429b.png)
【注】习惯性的我们在编写shell脚本文件名称的时候会在文件尾部加上.sh;这里只是为了区分其他文件,与脚本的执行无关。
5、如何执行一个shell脚本
5.1 手动指定环境开启shell
命令:sh ****.sh ###sh 指定的shell环境 ******.sh 脚本文件
特点:通过指定shell,运行脚本文件,此时会在当前shell下创建一个新的子shell,不运行脚本中的幻数;
![](https://i-blog.csdnimg.cn/blog_migrate/56cc35419117b197c1584508f35997ad.png)
5.1在当前shell中开启shell
命令:source ****.sh . ****.sh
特点:在当前命令行的shell下,直接执行shell脚本,不产生新的shell环境,不运行脚本中的幻数;
![](https://i-blog.csdnimg.cn/blog_migrate/e833ec011a30bcb3409d8272cc1c431d.png)
5.3 在当前环境中直接执行该文件
命令:chomd +x ****.sh /***/***/****.sh ###通过给文件权限,使用路径直接执行,
特点:执行用户需要可执行权限,直接执行shell脚本,会运行脚本中的幻数。
![](https://i-blog.csdnimg.cn/blog_migrate/0c20926758849d4dbbe4484ab728b82a.png)
6、如何对shell脚本进行调试
命令: sh -x ****.sh
结果:当命令行前有‘+’表示执行完成的,无‘+’表示输出。
![](https://i-blog.csdnimg.cn/blog_migrate/a18302df1a035461961b9a5b347b0ed1.png)
参考资料:百度百科