如何在 Bash 脚本中添加注释

news2024/11/8 15:24:01

在 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
<<DELIMITER
Comment line 1
Comment line 2
DELIMITER
echo "Hello, World!"

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

#!/bin/bash
<<COMMENT
This is a multi-line comment using a here document.
You can add as many lines as you want between <<COMMENT and the terminating keyword.
This block won't be executed by the shell.
COMMENT
echo "Hello, World!"

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

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

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

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

最后,介绍一款软件开发工具

JNPF开发平台,很多人都用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。原理是将开发过程中某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子。因而极大的提高了程序员的生产效率。

官网:http://www.jnpfsoft.com/?csdn,如果你有闲暇时间,可以做个知识拓展。

这是一个基于Java Boot/.Net Core构建的简单、跨平台快速开发框架,采用业内领先的SpringBoot微服务架构、支持SpringCloud模式。前后端封装了上千个常用类,方便扩展;采用微服务、前后端分离架构,集成了代码生成器,支持前后端业务代码生成,满足快速开发;框架集成了表单、报表、图表、大屏等各种常用的Demo方便直接使用;后端框架支持Vue2、Vue3,平台即可私有化部署,也支持K8S部署。

为了支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统软件开发几乎没有差异,只是通过低代码可视化模式,减少了构建“增删改查”功能的重复劳动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运维知识高级篇】超详细的Jenkins教程5(pipeline流水线配置+分布式构建)

CI/CD是持续集成&#xff0c;持续部署&#xff0c;集成就是开发人员通过自动化编译&#xff0c;发布&#xff0c;测试的手段集成软件&#xff0c;在开发的测试环境上测试发现自己的错误&#xff1b;持续部署是自动化构建&#xff0c;部署&#xff0c;通常也是在测试环境上进行&…

Android问题笔记 - NoSuchmethodException: could not find Fragment constructor

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

UiPath:一家由生成式AI驱动的流程自动化软件公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;UiPath(PATH)的股价并没有因为生成式AI的炒作而上涨&#xff0c;但很可能会成为主要受益者。 &#xff08;2&#xff09;即使在严峻的宏观环境下&#xff0c;UiPath的收入还在不…

实现Linux下Word转PDF、Java调用命令方式

使用 LibreOffice 实现 Word 转 PDF 和 Java 调用命令 1、 安装 LibreOffice 外网安装 # 一键安装 yum install -y libreoffice # 验证版本 libreoffice --version # Warning: -version is deprecated. Use --version instead. # LibreOffice 7.5.6.2 f654817fb68d6d4600d7…

深入理解 Python 虚拟机:进程、线程和协程

深入理解 Python 虚拟机&#xff1a;进程、线程和协程 在本篇文章当中深入分析在 Python 当中 进程、线程和协程的区别&#xff0c;这三个概念会让人非常迷惑。如果没有深入了解这三者的实现原理&#xff0c;只是看一些文字说明&#xff0c;也很难理解。在本篇文章当中我们将通…

智慧图书馆视频监控系统方案——助力图书信息化管理

图书馆的藏书一般都是较为宝贵和珍重的&#xff0c;但图书馆的读者较多且复杂&#xff0c;为保护十分珍贵的图书资源&#xff0c;防止图书馆图书的丢失和损坏&#xff0c;TSINGSEE青犀智能视频监控系统应运而生。 1、视频监控系统 安装高清摄像头覆盖图书馆内的关键区域&#…

PMP考试中的常见翻译问题

1、题目中出现的“启动会议”或“启动大会”开工会议&#xff08;kick-off meeting) 2、题目中出现的“回报期” 回收期&#xff08;项目选择的经济模型&#xff09; 3、题目中出现的“增强” 提高&#xff08;风险应对策略&#xff09; 4、题目中出现的“缓解” 减轻&#…

电源模块直流稳压电源不知道如何调试?纳米软件为您科普

调试是一个查错和排错的过程。电源模块调试就是在正常使用之前先通过调试检测其是否存在一些故障&#xff0c;确保在后期使用中整个电路可以稳定运行。直流稳压电源是常用的一种电源供应装置&#xff0c;今天纳米软件将介绍直流稳压电源调试方法。 直流稳压电源调试步骤 稳定直…

29 “select *“ 或者 “select field1, field2“ 的实现

前言 这里我们来探究一下 “select *” 或者 “select 字段列表“ 的相关实现 当然 这一部分在 “mysql union” 里面有具体的体现, 只是 可能没有那么细致 这里 来概览一下 这里的整个流程 select * from tz_test; setup_wild 的地方是处理 “select *” 的地方 外层迭代…

从北京到南京:偶数在能源行业的数据迁移实践

能源行业的数字化转型 当前&#xff0c;大数据技术在以电力为代表的能源行业不断推进&#xff0c;同时&#xff0c;分布式能源、储能、电网技术不断改进&#xff0c;电力行业的数字化转型充满了机遇和挑战。 一方面&#xff0c;电力行业本身自动化程度高、信息化基础好、系统…

去水印app有哪些?这三款良心推荐

如今图片的使用越来越普遍&#xff0c;因此我们经常需要对图片进行编辑和修改。但有些图片可能带有水印&#xff0c;这会影响图片的美观和应用效果。你知道有哪些推荐的图片去水印app吗&#xff1f;以下是介绍的三款可以去水印app&#xff0c;让你的素材更加专业和美观&#xf…

Python高频面试题——如何在字符串中删除指定字符,掌握strip()、replace()和re.sub ()正确使用方法!

关于python删除字符串是面试python测试开发工程师的一个经典问题。问题很简单&#xff0c;但是一下子就能测试出来被面试者是否能够熟练的进行python相关编码工作&#xff01; 对于有些临时抱佛脚的同学来讲&#xff0c;一看删除&#xff0c;很自然就说用remove 、del相关方法…

优化销售策略,突破企业全面预算管理难题

传统的企业年度销售计划往往会消耗企业内部人员很多精力和时间&#xff0c;比如需要收集数据、处理电子表格、确定项目优先级、预测未来发展以及为次年的费用制定预算等。然而随着这些繁琐的工作不断进行&#xff0c;其中的准确性和价值也受到了一定的怀疑。虽然销售计划仍按着…

经纬恒润推出全新一代智能电动座椅模块

随着智能驾驶、智能座舱的广泛应用&#xff0c;人们对于汽车的定位不再局限于代步工具&#xff0c;对于汽车座舱这个私密空间也有了不一样的期待。更安全、更舒适、更智能化的体验将成为未来智能座椅的发展方向&#xff0c;而传统的座椅控制系统已无法满足人们新的需求。 为了…

python3 win环境部署

python3 win环境部署 1.安装包 https://www.python.org/ftp/python/3.12.0/python-3.12.0-amd64.exe安装成功后 ctrlr 输入 cmd 执行 python 检验是否安装成功 pip 镜像源更新 查看pip.ini 文件路径,一般在 python 安装目录下添加 pip.ini 文件即可 pip -v config list​ 创建…

JAVA---RMI详解1

一、RMI简介 The Java Remote Method Invocation (RMI)允许运行在一台虚拟机上的对象调用运行在另一台虚拟机上的对象中的方法。RMI使用stubs and skeletons &#xff08;存根和骨架&#xff09;架构来和远程对象&#xff08;Remote Object&#xff09;沟通 二、相关术语介绍 1…

人脸写真FaceChain风格写真的试玩(二)

接着上一篇【人脸写真FaceChain的简单部署记录&#xff08;一&#xff09;】来试玩一下。 1 无限风格写真 参考&#xff1a;让你拥有专属且万能的AI摄影师AI修图师——FaceChain迎来最大版本更新 1.1 人物形象训练 这里的步骤比较简单&#xff0c;就是选择照片&#xff0c;然…

CentOS7.9离线安装Docker环境

1. 下载合适的Docker安装包 Docker安装包下载地址&#xff1a;Index of linux/static/stable/x86_64/https://download.docker.com/linux/static/stable/x86_64/ 进入地址页面&#xff0c;如下图&#xff1a; 我下载的是&#xff1a;docker-23.0.1.tgz 版本 2. 将下载好的Do…

linux-守护进程daemon

linux-守护进程daemon 代码实现 main.c运行结果 代码实现 main.c //pName&#xff1a;程序名 //facility&#xff1a; 守护进程&#xff0c;输出日志类型 302页 #include<signal.h> #include<syslog.h> #include<fcntl.h> static int daemon_proc 0; #defin…

AQS理解

AQS是JAVA中的一组抽象类&#xff0c;就是为了解决多线程并发竞争共享资源而引发的线程安全问题&#xff0c;细致点说AQS就是具备一套线程阻塞等待以及被唤醒的时候锁分配的机制&#xff0c;这个机制是由队列来实现的&#xff0c;暂时获取不到所的线程加入到队列里面&#xff0…