Bash 初学者系列 1:创建并运行第一个 bash shell 脚本

系统 Linux
今天我们将会介绍如何创建一个简单的 bash shell 脚本,如何运行 bash 脚本,以及关于 shell 脚本必须了解的内容。

我们可能经常会在 Linux 服务器上做一些重复的工作,比如文件的备份,清理临时文件,或者数据库的备份与恢复等。

对于这些重复性的工作,将其自动化是一个常规的操作,而自动化任务是 bash 脚本功能的应用场景之一。

今天我们将会介绍如何创建一个简单的 bash shell 脚本,如何运行 bash 脚本,以及关于 shell 脚本必须了解的内容。

创建并运行第一个 shell 脚本

我们先创建一个名为 scripts 的目录,用于存放所有的 bash 脚本。

mkdir scripts
cd scripts

然后在 scripts 目录中,使用 cat 命令创建一个名为 hello.sh 的文件:

cat > hello.sh

在 hello.sh 文件中编辑如下内容:

echo 'Hello, World!'

Ctrl + D 命令保存文件,然后退出 cat 命令。

也可以使用其他文本编辑器,比如 vim,emacs 或者 nano;如果你用的桌面 Linux,也可以使用像 Gedit 这样的图形文本编辑器将文本添加到文件中。

我们添加到 hello.sh 中的脚本是使用 echo 命令打印 “Hello World”,你也可以直接在终端中使用此命令,不过在我们的测试中,是通过 shell 脚本运行此命令。

然后我们使用 chmod 命令给 hello.sh 文件添加可执行权限,如下所示:

chmod u+x hello.sh

然后运行该脚本文件,如下:

bash hello.sh

你会看到 Hello World 打印在屏幕上。这跟我们学习其他编程语言一样,第一个程序总是打印 Hello World。

图片

将shell脚本转换为bash脚本

将 shell 脚本转为 bash 脚本,这看起来比较难理解是吧?我们简单的解释一下。

Bash是“Bourne-Again shell”的缩写,它只是 Linux 中许多可用 shell 中的一种。

而 shell 是一个接受和运行命令的命令行解释器。如果你运行过 Linux 命令,那么也就使用过 shell。当你在 Linux 中打开终端时,就已经在运行系统的默认 shell。

bash 通常是大多数 Linux 系统的默认 shell,所以很多时候,bash 都与 shell 同义。

shell 脚本的语法几乎是相同的,但也有不同的地方。比如,在 zsh 中,数组的索引是从1开始的,而 bash 是从0开始的。如果脚本中存在数组,那么使用zsh 编写的 shell 脚本,与 bash 编写的脚本就不同了。

为了避免这种差异造成的运行异常,我们应该告诉解释器当前脚本是使用哪种 shell 编写的,这个时候,需要使用 shebang!

shell 脚本开头的 shebang 行

在 shell 脚本的第一行,即 #! /bin/bash 这一行通常被称为 shebang,这是因为它是以两个字符开头的,分别是 #(hash)!(bang)

#! /bin/bash
echo 'Hello, World!'

当我们在脚本的顶部包含 #! /bin/bash 时,系统就知道我们希望使用 bash 作为脚本的解释器。因此可以直接运行 hello.sh,而无需在其前面加上 bash。

图片

将shell脚本添加到PATH(以便可以从任何目录运行)

在前面我们运行 hello.sh 的时候,在前面添加了./ 字符,如果省略了这两个字符,就会出错:

$ hello.sh
hello.sh: command not found

首先 Bash 认为我们正在尝试运行一个名为hello.sh的命令,当我们在终端上运行任何命令时,shell 会在PATH变量中存储的一组目录中查找该命令。

可以使用 echo 命令查看 PATH 变量的内容:

echo $PATH
/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

在 PATH 变量中,各个目录的路径之间使用冒号分割开。

像 echo、cat 等 Linux 命令可以从任何地方运行,因为它们的可执行文件存储在 bin 目录中,而 bin 目录包含在 PATH 中。当我们运行命令时,系统会检查 PATH 中所有可能的位置,以查找该命令的可执行文件。

如果想要让我们的 bash 脚本从任何地方都可以运行,那么需要将该脚本的位置添加到 PATH 变量中。

首先,使用 pwd 命令查看当前目录的位置(bash 脚本的位置):

pwd

然后使用export命令将脚本目录添加到 PATH 变量中:

export PATH=$PATH:/home/user/scripts

现在我们再来运行一下 hello.sh:

$ hello.shHello, World!

图片

可以看到,添加到 PATH 变量后,脚本可以正常运行了。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2023-06-19 11:30:19

bashshell

2022-11-30 07:47:00

Bash脚本

2022-12-01 08:10:49

Bash脚本参数

2022-12-13 12:55:15

Bash循环

2022-12-14 10:08:00

BashLinux

2022-12-02 14:30:24

Bash脚本数组

2022-12-09 07:58:52

Bash条件语句

2022-12-16 09:01:24

2022-12-08 12:05:03

Bash字符串

2022-12-07 07:43:21

2022-11-03 08:13:52

echo 命令Linux

2021-12-30 10:26:37

Bash Shell脚本文件命令

2015-09-28 11:15:03

java初学者建议

2011-08-01 16:10:00

SQL Server

2011-06-17 14:12:32

Qt

2022-01-20 16:43:38

Bash 脚本ShellLinux

2022-02-28 11:02:53

函数Bash Shell语句

2011-06-08 10:01:36

Windows Pho 应用程序

2009-11-13 15:46:25

Java多线程

2011-09-16 09:38:19

Emacs
点赞
收藏

51CTO技术栈公众号