Bash Hello World 实战:用 Introduction to Bash Scripting 电子书写出第一个可执行脚本
2026/9/17 4:13:37 网站建设 项目流程

Bash Hello World 实战:用 Introduction to Bash Scripting 电子书写出第一个可执行脚本

【免费下载链接】introduction-to-bash-scriptingFree Introduction to Bash Scripting eBook项目地址: https://gitcode.com/GitHub_Trending/in/introduction-to-bash-scripting

本指南基于开源电子书项目introduction-to-bash-scripting(README.md)中“Bash Hallo Welt”(Bash Hello World)章节整理而成,面向第一次接触 Bash 脚本的开发者、系统管理员与 DevOps 工程师。读完本文,你将掌握从创建.sh文件、编写echo输出、赋予执行权限到以多种方式运行脚本的完整流程,并理解 Shebang 与脚本执行机制背后的原理。

前置准备:脚本文件与 Shebang 从何而来

在动手编写 Hello World 之前,你需要先准备两样东西:一个以.sh结尾的脚本文件,以及文件第一行的 Shebang 声明。这两步正是前一章“Bash 结构”所讲的内容,是当前 Hello World 章节的直接前置条件。

创建脚本文件有两种常用方式:

touch devdojo.sh

或者直接用文本编辑器打开(不存在时会自动创建):

nano devdojo.sh

要让 Bash 解释器识别并执行该文件,必须在脚本第一行写入可执行文件/bin/bash的绝对路径:

#!/bin/bash

这一行被称为Shebang(又称 hashbang)。它告诉操作系统:这个脚本应当交由/bin/bash这个程序来解释执行,而不是当作普通文本文件处理。换句话说,#!/bin/bash只是操作系统调用解释器的一个“指令标记”,脚本真正的内容从第二行开始。

编写你的第一个 Hello World 脚本

现在重新打开devdojo.sh,在#!/bin/bash这一行之后加入echo命令,内容如下:

#!/bin/bash echo "Hello World!"

逐行解读:

  • #!/bin/bash:Shebang,声明使用 Bash 解释器;
  • echo "Hello World!":调用echo命令,把双引号中的字符串原样打印到标准输出(终端屏幕)。

保存并退出编辑器(在nano中是Ctrl+O保存、Ctrl+X退出)后,脚本文件就绪,接下来进入执行环节。

赋予执行权限:chmod +x 的必要性

脚本写好并不意味着可以直接运行。默认情况下,新建文件的权限并不包含“执行(execute)”位,因此需要先通过chmod命令为文件添加执行权限:

chmod +x devdojo.sh

+x表示给文件所有者、所属组及其他用户都加上执行权限。这一步是“以./方式直接运行脚本”的必要前提——如果没有执行权限,系统会提示Permission denied

运行脚本的两种典型方式

方式一:相对路径直接执行

./devdojo.sh

./表示当前目录下的文件。执行后,你会在屏幕上看到:

Hello World!

这种方式依赖 Shebang:内核读取文件第一行,找到/bin/bash,再让 Bash 来运行脚本剩余内容。

方式二:显式调用 Bash 解释器

bash devdojo.sh

这种写法不依赖执行权限位和 Shebang——你直接把脚本文件作为参数传给bash命令,由 Bash 读取并执行。即使在文件没有+x权限、甚至第一行没有写 Shebang 的情况下,这种方式通常也能正常工作。

两种方式各有适用场景:./devdojo.sh更贴近“可执行程序”的语义,适合交付给用户运行的成品脚本;bash devdojo.sh更灵活,适合快速调试。

交互式 Bash:不写文件也能得到同样的输出

Bash 既是一种脚本语言,也是一种交互式 Shell。你不一定非要创建文件,直接在终端里敲入同一条echo命令,也能得到几乎一样的效果:

echo "Hallo DevDojo!"

终端会立即打印:

Hallo DevDojo!

这个例子说明:脚本文件里的每一行命令,本质上就是你平时在交互式终端里输入的命令。脚本的价值在于把它们“组合”并“自动化”起来。

为什么要写脚本:组合多个命令

单个echo命令确实看不出脚本的优势——它和直接敲命令没有区别。正如原文档所强调的:“把若干命令组装成一个脚本,只有在需要把多个命令组合在一起时才真正有用”

设想这样的场景:先读取用户输入、再拼接字符串、再执行某个系统命令、最后把结果写到日志文件——如果每次都手动敲一遍,既繁琐又容易出错;而把它写进devdojo.sh并加上执行权限后,一行./devdojo.sh就能重复完成整串操作。这正是后续章节(Bash 变量、Bash 用户输入、Bash 参数 等)要逐步展开的内容。

为了直观感受“组合”的含义,可以提前看一个来自下一章变量的扩展示例——把变量嵌入 Hello World:

#!/bin/bash name="DevDojo" echo "Hallo, $name"

运行后输出:

Hallo, DevDojo

注意变量赋值name="DevDojo"时,=两边不能有空格;引用变量时用$name或更规范的${name}。这也印证了脚本从“静态输出”走向“动态逻辑”的第一步。

仓库中的工程化佐证

这个 Hello World 示例并非孤立的教学片段,而是整个开源仓库工程流程的一部分,可以从以下几处得到验证:

  • 章节编排:该章节的英文原版位于 ebook/en/content/003-bash-hello-world.md,德语版即本文依据的 ebook/de/content/003-bash-hello-world.md,各语言版本内容一致,便于对照阅读。
  • 代码质量校验:仓库提供了 scripts/shellcheck-ebook.sh,它会自动抽取各章节 Markdown 中的bash代码块,逐块运行shellcheck静态检查(并针对教学性代码排除SC2034SC2154等误报类规则),保证书中所有示例代码可运行、无警告——本文出现的echochmodread等命令均在该脚本的校验覆盖范围内。
  • 电子书构建:仓库通过 ebook/de/epub.yml 等配置文件,用 Pandoc 将content/*.md汇总生成 ePub,再用 Ibis 生成 PDF(英文版成品见 ebook/en/export/)。这意味着你看到的每个章节都是最终电子书的一部分,示例与正文属于同一套内容源。

常见问题与排查要点

  • 提示Permission denied:说明没有执行权限,运行chmod +x devdojo.sh后再试。
  • 提示command not found:运行./devdojo.sh时请务必带上./前缀,否则系统会按PATH环境变量搜索可执行文件而找不到当前目录。
  • 第一行不是#!/bin/bash:用./方式运行可能出错或被其他 Shell 解释,确保 Shebang 位于文件第一行、顶格书写。
  • 字符串里的引号echo "Hello World!"的双引号用于界定字符串;如果漏掉引号,Bash 会把HelloWorld!当作两个独立参数,通常也能输出相同结果,但遇到空格、特殊字符时行为会不同,因此建议始终加引号。

小结

通过本指南,你已经完成了 Bash 脚本的“零的突破”:创建devdojo.sh、写入 Shebang 与echo、用chmod +x授权、以./devdojo.shbash devdojo.sh运行,还体验了交互式 Bash 的直接输出。这套“写文件 → 授权 → 执行”的流程,是之后学习变量、用户输入、参数、条件判断与循环等所有进阶主题的通用骨架。下一步,建议接着阅读同一仓库中的 Bash 变量 章节,把脚本从“固定输出”升级为“可定制输出”。

【免费下载链接】introduction-to-bash-scriptingFree Introduction to Bash Scripting eBook项目地址: https://gitcode.com/GitHub_Trending/in/introduction-to-bash-scripting

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询