一、shell的作用
Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。常见的 Shell 解释器程序有很多种,使用不同的 Shell 时,其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。
可以通过/etc/shells查看本机的shell信息
linux中常见的shell有以下这些:
bash:基于gun的框架下发展的shell
csh:类似c语言的shell
tcsh:整合了csh提供了更多功能
sh:已经被bash替换
nologin:让用户无法登录
bash (/bin/bash)是目前大多数Linux 版本采用的默认shell。
shell脚本用途
将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率
减少手工命令的重复输入,一定程度上避免人为错误
将软件或应用的安装及配置实现标准化
用于实现日常性的,重复性的运维工作,如:文件打包压缩备份,监控系统运行状态并实现告警等
二、什么是shell脚本
就是将命令按顺序一一列出,最后自动执行,执行需要权限,也可以直接使用绝对路径,脚本其实不复杂,通用脚本环境改变后依然可以使用的脚本。
脚本由脚本解释器、注释信息和可执行语句组成:
1.脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器。
2.注释信息:以#开头的语句表示为注释信息。
3.可执行语句:比如echo命令用于输出“ ”之间的字符串。
三、脚本执行逻辑及执行方式
脚本执行逻辑
1.顺序执行:程序按从上到下顺序执行
2.选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
3.循环执行:程序执行过程中需要重复执行多次某段语句
执行方式:
1.指定路径去执行文件(需要有执行权限):
[root@localhost ~]# chmod +x /root/test.sh
2.指定解释器去执行(不需要权限):
[root@localhost ~]# bash test.sh
四、脚本错误调试
在编写脚本的过程中,我们或多或少的会遇到错误,那么脚本的问题大概被分为三类:
1.命令错误,命令出错不会影响接下来的命令继续,可以使用 bash -x 进行观察。
2.语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的。
3.逻辑错误,逻辑错误不能使用bash -n 检查错误,只能通过bash -x进行观察。
由于linux命令运行不成功时,shell脚本自身并不会马上退出,所以为了避免继续运行导致的问题,可以在脚本中加入set -e。这样set -e后面的命令只要有异常,脚本就会立马退出,而不是继续执行;如果想在某处开始结束这种设定,只需要在该处再写入set +e即可,这样这种有异常就立马退出的功能就会被关闭。