文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-01 02:13

关注

我们可能经常会在 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内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯