在 Linux 系统中,shell 的应用非常广泛,可以说它是管理系统的一个重要接口。通过编写 shell 脚本程序,可以实现自动化运维操作,从而显著提高运维的效率。
【一】shell概述
shell 是一个在操作系统和应用程序之间的命令翻译工具。简而言之,shell 是一种命令解释器(command interpreter)。Linux 中存在多种 shell 命令解释器,常见的有以下几种:
①Bourne shell(/usr/bin/sh 或 /bin/sh)。
②Bourne Again Shell(/bin/bash)。
③C shell(/usr/bin/csh)。
④K shell(/usr/bin/ksh)。
⑤Root 用户的 shell(/sbin/sh)。
在本篇中,主要介绍的是 bash,即 Bourne Again Shell。由于 bash 的易用性和免费性,使其在日常工作中得到了广泛应用,同时也是大多数 Linux 系统的默认 shell。
【二】shell 的定义
shell 位于操作系统与应用程序之间,充当它们之间的接口。shell 将应用程序的输入命令解释给操作系统,同时将操作系统执行后的结果返回给应用程序,如图所示:
shell 的类型可以分为以下几类:
1. 图形界面 shell,例如桌面环境就是一个图形界面 shell。
2. 命令行 shell,例如 Linux 系统下常用的 bash。
要查看当前系统使用的 shell,可以使用以下命令行代码。
【三】什么是 shell 脚本
当可执行的 Linux 命令或语句不是直接在命令行中输入执行,而是通过一个文件来执行时,这个文件就被称为 shell 脚本。简单来说,将多个可执行的 Linux 命令组合成一个文件,即为 shell 脚本。
shell 脚本的优缺点如下:
①优点:存在时间较长,积累了大量经验(诞生较早),编写简单,对运行环境依赖性小。
②缺点:无法实现复杂功能,不支持现代编程语言的高级特性,如面向对象等。
下面我们来创建一个简单的 shell 脚本文件,示例代码如下:
# 创建 shell 脚本文件,命名为 hello.sh
vim hello.sh
在新创建的 hello.sh 文件中输入以下代码:
#!/bin/bash
echo 'Hello shell, I’m coming!'
保存并退出编辑器后,一个简单的 shell 脚本文件就创建完成了。
创建完成 shell 脚本后,就可以执行该脚本文件,执行方法有以下三种:
1. `./xxx.sh`
使用文件第一行 `#!` 指定的解释器进行解析,如果没有指定解释器,则使用系统默认的解释器。
2. `bash xxx.sh`
直接使用 bash 解释器进行解析,如果系统中没有 bash,则会使用默认解释器。
3. `. xxx.sh`
使用默认解释器进行解析,不会使用第一行的 `#!` 指定的解释器,但第一行仍然需要写。此外,还需注意“.”和文件名之间有一个空格。
注意:在使用 `./xxx.sh` 方式执行脚本文件之前,需要先为脚本文件赋予可执行权限,命令为 `chmod +x hello.sh`,否则会出现错误提示。