在一些复杂的Linux维护工作中,大量重复性的输入和交互操作不仅费时费力,而且容易出错,而编写一个恰到好处的Shell脚本程序,可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担
shell脚本其实就是一堆命令的罗列:将很多的目录放在一个文件当中,然后一块执行
Linux环境下,shell是一个特殊的应用程序,它介于操作系统与内核之间,主要的翻译用户输入的命令,让操作系统内核可以看懂命令的含义
见的Shell解释器程序有很多种,使用不同的Shell脚本时,其内部指令、命令行提示等方面会存在一些区别。通过/etc/shells文件可以了解当前系统所支持的Shell脚本种类。
[root@localhost ~]# cat /etc/shells //查看系统所支持的shell类型
/bin/sh
/bin/bash
/sbin/nologin
下面我们来写一个
[root@localhost ~]# vim first.sh //新建first.sh文件
cd /boot/
pwd
ls -lh vml*
[root@localhost ~]# chmod +x first.sh //添加可执行权限
[root@localhost ~]# ./first.sh //直接运行脚本文件
/boot -rwxr-xr-x. 1 root root 5.2M Apr 12 13:20 vmlinuz-0-rescue-b15df1eb8205483f9f70c79709810abc -rwxr-xr-x. 1 root root 5.2M Nov 22 2016 vmlinuz-3.10.0-514.el7.x86_64
在上面的文件中,
1.我们创建了一个名为first.sh 的文件 //这个文件名称可以自定义,尽量有意义
2.我们在这个文件当中写了很多命令
3. 我们给first.sh文件以执行的权限
4. 我们直接执行了这个脚本文件
然而,这样写。虽然可以满足我们使用shell脚本,执行。但是在实际的工作当中,他是不符合规范的。
规范格式如下
[root@localhost ~]# vim first.sh
#!/bin/bash //这是我们指定的shell解释器,位于这一行的#号不是起注释的作用
# This is my first Shell-Script. // 这是注释,告诉他人这个shell脚本是干什么的
cd /boot //这是普通的一个Linux命令
echo "当前的目录位于:" //输出在屏幕上的信息
pwd
echo "其中以vml开头的文件包括:" //输出在屏幕上的信息
ls -lh vml*
[root@localhost ~]# chmod +x first.sh //给这个文件以执行权限
[root@localhost ~]# ./first.sh //执行
当前的目录位于:
/boot
其中以vml开头的文件包括:
-rwxr-xr-x. 1 root root 5.2M Apr 12 13:20 vmlinuz-0-rescue-b15df1eb8205483f9f70c79709810abc -rwxr-xr-x. 1 root root 5.2M Nov 22 2016 vmlinuz-3.10.0-514.el7.x86_64
上面关于echo这条命令的解释不是很精准
以上面的脚本执行结果看,echo在这里精确的解释是
在每一个命令的执行结果以上,写上显示的结果是为了干什么
在这里讲一下,shell脚本执行的方式有:
1.[root@localhost ~]# sh first.sh //通过/bin/sh来解释脚本 ,不用加权限
2.[root@localhost ~]# . first.sh //通过点号来加载脚本
3.[root@localhost ~]# ./first.sh //需要给权限
好了,有关于shell 编程基础就到这里了,谢谢大家