跳至内容

Bash - 第一个脚本

在本章中,您将学习如何用 bash 编写您的第一个脚本。


目标:在本章中,您将学会如何

✔ 编写您的第一个 bash 脚本;
✔ 执行您的第一个脚本;
✔ 使用所谓的 shebang 指定要使用的 shell;

🏁 linux, 脚本, bash

知识⭐
难度⭐

阅读时间:10 分钟


我的第一个脚本

要开始编写 shell 脚本,最好使用支持语法高亮的文本编辑器。

例如,vim 是一个很好的工具。

脚本的名称应遵守一些规则

  • 不得使用现有命令的名称;
  • 只能使用字母数字字符,即不能有带重音的字符或空格;
  • 扩展名 .sh 以表明它是一个 shell 脚本。

注意

作者在这些课程中一直使用 "$" 来表示用户的命令提示符。

#!/usr/bin/env bash
#
# Author : Rocky Documentation Team
# Date: March 2022
# Version 1.0.0: Displays the text "Hello world!"
#

# Displays a text on the screen :
echo "Hello world!"

要能够运行此脚本,需要将其作为参数传递给 bash

$ bash hello-world.sh
Hello world !

或者,更简单地说,在赋予它执行权限后

$ chmod u+x ./hello-world.sh
$ ./hello-world.sh
Hello world !

注意

要执行脚本,当您在脚本所在的目录中时,需要在其名称前加上 ./ 来调用它。如果不在该目录中,您将需要使用脚本的完整路径来调用它,或者将其放置在 PATH 环境变量中的某个目录中:(例如:/usr/local/sbin, /usr/local/bin 等)解释器将拒绝执行当前目录中没有指定路径(此处为之前的 ./)的脚本。

chmod 命令只需对新创建的脚本执行一次。

任何脚本中要写的第一行是指定用于执行它的 shell 二进制文件的名称。如果您想使用 ksh shell 或解释型语言 python,您将替换该行

#!/usr/bin/env bash

#!/usr/bin/env ksh

或者为

#!/usr/bin/env python

第一行称为 shebang。它以 #! 字符开头,后跟要使用的命令解释器的二进制文件的路径。

关于 shebang

您可能在您查看过的脚本中遇到过 "shebang",但该脚本不包含 "env" 部分,只包含要使用的解释器。(例如:#!/bin/bash)。作者的方法被认为是格式化 "shebang" 的推荐且正确的方式。

为什么推荐作者的方法?因为它提高了脚本的可移植性。如果由于某种原因解释器位于完全不同的目录中,如果您使用作者的方法,解释器**仍然**会被找到。

在编写过程中,您应该考虑校对脚本,特别是使用注释

  • 在开头进行一般性介绍,以说明脚本的目的、作者、版本、用途等。
  • 在文本中以帮助理解操作。

注释可以放在单独一行,或者放在包含命令的行的末尾。

示例

# This program displays the date
date # This line is the line that displays the date!

作者:Antoine Le Morvan

贡献者:Steven Spencer, Ganna Zhyrnova