如何在 Bash 脚本中添加注释
创始人
2024-03-02 17:42:10
0

你有要说明的地方吗?请将它们添加到你的 Bash 脚本中。

在 Bash 脚本中添加注释是保持代码整洁且易于理解的最有效方法之一。

你可能会问为什么。

假设你的脚本包含一个复杂的正则表达式或多个复杂的代码块,在这种情况下,你可以添加注释,以便其他开发人员或你可以了解该代码块的含义。

注释掉部分代码也有助于调试脚本。

在本教程中,我将引导你了解在 Bash 脚本中添加注释的三种方法:

  • 单行注释
  • 行内评论
  • 多行注释

那么让我们从第一个开始。

Bash 中的单行注释

要添加单行注释,你必须将哈希符号(#)放在行的开头并编写注释。

这是一个简单的例子:

#!/bin/bash
# This is a comment
echo "Hello, World!"

执行时,注释将被忽略,当我执行上面的命令时,它看起来像这样:

? # 注释规则的唯一例外是脚本开头的 #!/bin/bash 行。它称为 释伴,用于指定运行脚本时要使用的解释器。有不同的 Shell,语法也可能不同。因此,一个好的做法是指定脚本是为哪个 Shell 编写的。例如,如果是 ksh,则可以使用 #!/bin/ksh.

Bash 脚本中的内联注释

或者,你可以将注释放在代码块内以记录该特定行的用途。

? # 之后的任何内容在该行结束之前都不会执行,因此请确保在代码末尾添加注释。

这是一个简单的例子:

#!/bin/bash
echo "Hello, World!" #Prints hello world

Bash 中的多行注释

? Bash 中没有内置的多行注释功能。但是,有一些解决方法可以实现多行注释效果。

顾名思义,Bash 脚本中的多行注释允许你在多行中编写注释,或者通过将它们放在多行注释部分来阻止执行代码块:

  1. 在每行的开头使用 #
  2. 冒号表示法(使用冒号后跟单引号)
  3. 现场文档(使用 << 后跟分隔符)

那么让我们从第一个开始。

1、对块注释的每一行使用 #

如果你的目的是解释脚本的一部分,我建议使用此方法。毕竟,# 才是真正的注释功能。

这也是许多开发人员使用的方法。

假设你必须在一开始就解释脚本的用途、作者信息或许可信息。你可以这样写:

#!/bin/bash

######################################
## This script is used for scanning ##
## local network                    ##
## Licensed under GPL 2.0           ##
######################################

这个 Bash 脚本的其它部分……

当你想说明 Bash 脚本的行为方式时这不错。如果你正在调试 Bash 脚本并希望隐藏部分脚本,则在所需代码的每一行开头添加 # 并在调试后将其删除是一项耗时的任务。

接下来的两节将帮助你做到这一点。

2、冒号表示法

要使用冒号表示法,请在 : ' 和结束的 ' 之间编写块注释,如下所示:

#!/bin/bash

: '
This is how you can use colon notation
And this line too will be ignored
'
echo "GOODBYE"

当你执行上面的脚本时,它应该只打印 GOODBYE

3、现场文档

到目前为止,这是在 Bash 中编写多行注释的最流行的方法,你可以使用 << 后跟分隔符(一组用于指定注释开始和结束的字符)。

(LCTT 译注:在编程领域,“here document” 是一个常见的术语,特指在脚本语言(如 Perl、Bash)中,能够直接在代码内部嵌入并处理一个数据块或文本串的技术。尽管传统上我们将它翻译为“嵌入式文档” 或不翻译,但这个译法似乎并不能完全地体现出原文的感觉和含义。为了让这个概念变得更为直观和易理解,我们建议将 “here document” 翻译为 “现场文档”。“现场”相比于“嵌入式”,更好的传达了文档就在代码的当前位置,或代码“现场”的含义。这样的译法也与原文 “here document” 中 “here”(这里)的含义更为契合。我们希望这个译法能够在未来得到更广泛的使用和认可,让编程的世界因语言的精准而变得更美好。PS., 该译法和解释得到了 ChatGPT 的建议和生成。)

使用方法如下:

#!/bin/bash

<

还困惑吗? 这是一个简单的例子:

#!/bin/bash

<

在上面的示例中,我使用了 COMMENT 作为分隔符,但你可以使用任何内容,但要确保它从注释中脱颖而出,否则会造成混乱。

当我执行上面的脚本时,它给出了以下输出:

正如你所看到的,它忽略了从 <COMMENT 的所有内容。

我希望本指南对你有所帮助。

(题图:MJ/7c2a3ef4-5256-405e-b757-23e0ba1f0bc5)


via: https://itsfoss.com/bash-comments/

作者:Sagar Sharma 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

AI辅助Linux系统管理...
我并非所有场景都推崇使用AI。在创意类工作中,我坚持认为AI介入空...
2026-06-20 12:53:31
AI起草人工审核:X 引入...
AIPress.com.cn报道 2月6日消息,社交平台 X 正在...
2026-02-06 13:49:51
基础Ubuntu网络代理的...
Ubuntu系统的网络代理配置是许多用户日常使用中的必备技能,从基...
2025-08-24 16:46:06
编写CentOS系统下的B...
面对重复繁琐的服务器操作,手动输入命令效率低下且易出错。为了解决这...
2025-06-15 08:43:24
AI竟会「自己认错」?破解...
新智元报道 编辑:定慧 好困 【新智元导读】 在多智能体AI系统...
2025-06-02 21:12:04
【Java注释】如何自定义...
一,如何自定义注解 1.1 在编译时进行格式检查(J...
2025-05-29 05:49:50

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...