什么是 Shell 脚本

2024 年 8 月 29 日 | 4 分钟阅读

在 Linux 中,bash 和 korn 等 shell 支持编程结构,这些结构被保存为脚本。 这些脚本变成 shell 命令,因此许多 Linux 命令都是脚本。

系统管理员应该对脚本编写有一些了解,以了解其服务器和应用程序是如何启动、升级、维护或删除的,以及了解如何构建用户环境。

Shell 脚本是一种计算机程序,旨在由 Unix shell(也称为命令行解释器)执行。 几种 shell 脚本方言被视为脚本语言。 Shell 脚本实现的经典操作包括打印文本、程序执行和文件操作。 脚本配置环境、执行程序并执行必要的日志记录或清理,称为包装器。

此外,该术语更广泛地用于定义执行操作系统 shell 的自动化模式; 所有操作系统都使用特定名称来表示这些功能,例如大型机操作系统、shell 脚本(第三方衍生产品和 Windows NT 流,如 4NT)、VMS(命令过程)和批处理文件(OS/2、MSDos-Win95 流)与几个术语相关。

通常,shell 在类 Unix 和 Unix 系统中表示,例如 GNU Bash、Bourne shell 和 Korn shell。 这些 shell 通常用于向后兼容,而 Unix 操作系统可能包含一个不同的默认 shell,如 MacOS 上的 zsh。

Shell 脚本的功能

  • 注释

shell 避免注释。 通常,它们以井号 (#) 符号开头,并持续到行尾。

  • 脚本语言可配置选项

hash-bang 或 shebang 是一种特殊类型的注释,系统应用它来决定使用哪个解释器来运行文件。 hash-bang 必须是文件的第一行,并以“#!' 符号开头。 在“#!' 前缀之后,字符被指定为任何可执行程序的路径,该程序将指定 Unix 类操作系统中的脚本。

  • 快捷方式

shell 脚本可以提供系统命令的简单变体,其中自动应用独特的环境设置、后处理或命令选项,但采用允许新脚本充当完全正常的 Unix 命令的形式。

一个例子是制作一个 ls 版本,即列出文件的命令,提供缩短的“l' 命令名称,该名称通常保存在用户的 bin 目录中,如 /home/username/bin/l,并预先提供命令选项的默认设置。

在上面的示例中,第一行应用 shebang 来表示应该运行脚本其余部分的解释器。 另一行使用选项创建一个列表,用于多个文件格式列、指示符、所有文件和块大小。 LC_COLLATE=C 配置默认的排序序列,以便不将小写和大写字母折叠在一起。

另一个 shell 脚本示例,可以作为快捷方式运行,以显示给定目录中的所有文件和目录列表。

在上面的示例中,shell 脚本将以其常见的起始行 #!/bin/ sh 开头。 之后,脚本运行 clear 命令,该命令清除命令行上的所有文本,直到下一行。 ls -al 命令将列出脚本正在执行的目录中的目录和文件。 可以修改 ls 命令的属性以反映用户的要求。

重要提示:如果实现没有 clear 命令,我们可以使用 clr 命令。

  • 批处理作业

shell 脚本允许自动执行许多手动输入到命令行界面的命令,而无需等待任何用户生成所有序列阶段。

  • 泛化

常见的批处理作业通常用于分离任务,但使用 shell 变量、测试和循环为用户提供了更大的合规性。 POSIX sh 脚本用于将 JPEG 图像转换为 PNG 图像,其中图像标题可能由命令行中的通配符给出,而不是全部列在脚本中; 它可以与此文件一起制作,通常保存在一个文件中,例如 /home/username/bin/jpg2png

  • 编程

此外,几个现代 shell 提供了许多通常仅在更实用的通用编程语言中检测到的功能,例如子程序、数组、注释、变量、控制流结构等。 有了这些类型的功能,就可以合理地将实用程序应用程序编写为 shell 脚本。

但是,它们仍然受到以下事实的限制:几乎所有 shell 语言都对复杂的数学、数据类型系统、线程、类和其他基本的全语言方面没有或几乎没有支持,并且也比解释型语言或以速度为管理目标指定的已编译代码慢得多。

标准 awksed Unix 工具为 shell 编程提供了额外的功能。 此外,Perl 可以安装在 shell 脚本中,就像其他脚本语言(如 Tcl)一样。 Tcl 和 Perl 也提供图形工具包。


下一主题如何确定 shell