Shell 语言中是没有类似于 C/C++, Python 等计算机语言多行注释的功能的,可是对于脚本文件进行调试时,我们不可避免的需要对其中的代码进行注释,如果是很少的几行代码,手动的在每行首添加 # 就可以了,但是如果需要对于大量的代码块进行注释,手动的注释每行代码就不适用了。对于这个问题,推荐一些常用的方法。

第一种方法(利用 Here Document 特性):

简单来说就是用一个空命令接收要注释的命令行,不做任何事情,以此来达到注释的目的。例如;

<< EOF

Cmd line 1

Cmd line 2

Cmd line 3

Cmd line 4

EOF

命令行在起始 << EOF 和随后临近的 第一个EOF 之间的内容都会被注释掉。

第二种方法,可以说是第一种方法的拓展,利用 Shell 中的空命令 : (冒号,注意其后有个空格),这个命令不做任何动作,举例如下;

: "

Cmd line 1

Cmd line 2

Cmd line 3

Cmd line 4

"

但是这里面会出现潜在的问题,如果被注释的 Cmd line 中有同类型的单或双引号时,注释是无效的。例如,

: "

Cmd line 1

Cmd line "2"

Cmd line 3

Cmd line 4

"

在 Cmd line “2” 中有同类型的引号,那么第一个引号之前的内容会被“注释”掉,但是往后代码内容可能会报错,所以用这种方法之前,最好检查一下避免同类型引号的出现。

结合第一种和第二种方法,综合策略是,

: << EOF

Cmd line 1

Cmd line 2

Cmd line 3

Cmd line 4

EOF

其实这种命令类似于:

cat << EOF > /dev/null

Cmd line 1

Cmd line 2

Cmd line 3

Cmd line 4

EOF

cat 可以换成 less, more, echo 等,> /dev/null 重导向命令类似于删除,不打印任何内容。

虽然说以上方法都能完成对多行代码的注释,但是它们也仅仅只是抑制了代码的执行和打印输出,Shell 还是会处理它们的,只是你看不到而已,这就不可避免的影响到了代码的执行效率。当然了,以现代计算机的处理速度,流处理文本文档上百万行都不会花费太多时间。可是,既然是被注释的代码,我们当然不想让它被执行。所以,这里推荐一个更终极的解决方法,那就是利用“函数”。

Shell 类似于 C/C++, Python, Java 等计算机语言也是可以定义函数的,定义的方法如下,

func_name () {

Code_block

}

这里我们并不探讨 Shell 函数的具体定义和使用,只是研究借助它如何实现代码的多行注释。那么,我们可以这样实现;

dump(){

Cmd line 1

Cmd line 2

Cmd line 3

Cmd line 4

}

除了 dump 函数名外,你可以选择任何个人喜欢的名称,但是记住只要不调用它就可以了。

综合所述,即使 Shell 不能多行注释,但是我们通过其他的一些方法,仍然可以实现这样的功能, 其中函数定义的方式相比之下更加强大,即有效的避免了单双引号的问题,同时也避免了注释模块的执行效率问题。

dev多行注释_Shell 实现多行注释的几种常用方法相关推荐

  1. vue——props的两种常用方法

    vue--props的两种常用方法 1.实现父-->子的通信 举例如下: 父组件 parent.vue <children :channel="object1"> ...

  2. python电脑下载方法-python 获取机器snpython下载文件的几种常用方法

    python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下: 002pc.com从python 获取机器snpython下载文件的几种常用方法分析来看 ...

  3. python下载方法-python下载文件的几种常用方法

    本文信息本文由方法SEO顾问发表于2016-10-1814:34:30,共 506 字,转载请注明:python下载文件的几种常用方法_[方法SEO顾问],如果我网站的文章对你有所帮助的话,来百度口碑 ...

  4. python timer使用-Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  5. Java更新XML的四种常用方法简介

    http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=393702 本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分 ...

  6. vue方法传值到data_Vue 组件传值几种常用方法【总结】

    使用vue也有很多年了,一直都没有整理一下相关知识,给大家总结下开发过程中所遇到的一些坑,主要给大家总结一下vue组件传值的几种常用方法: 1.通过路由带参数传值 ① A组件通过query把id传给B ...

  7. asp mysql insert_用asp把表单数据插入数据库的2种常用方法

    用asp把表单数据插入数据库的2种常用方法: 1.直接使用sql语句的 优点:速度快,不耗资源 缺点:不能传递太长的字段内容,字段比较多时不易排错. 推荐有经验的编程者优先考虑. 具体操作: 假设表单 ...

  8. NSString的几种常用方法

    NSString的几种常用方法 要把 "2011-11-29" 改写成 "2011/11/29"一开始想用ios的时间格式,后来用NSString的方法搞定. ...

  9. python定时器的使用方法_Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  10. html列表逆序输出,JS实现倒序输出的几种常用方法示例

    主要介绍了JS实现倒序输出的几种常用方法,结合实例形式分析了JavaScript字符串与数组的转换.变量.分割.反转等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS实现倒序输出的几种常用方法. ...

最新文章

  1. FCN、Unet、Unet++:医学图像分割网络一览
  2. nginx禁止对写操作timeout时retry
  3. 三分钟教你用 Scarlet 写一个 WebSocket App
  4. gradle 项目打包成多个jar包_永不失优雅——高效管理Springboot项目
  5. LIS (nlogn)的算法
  6. c/c++教程 - 2.4.2.5 深拷贝和浅拷贝,堆区内存重复释放
  7. 在Ubuntu 18.04上搭建SonarQube服务
  8. “让我陪你走到人生的尽头。” | 也许AI能提供更好的临终关怀
  9. Mysql的远程连接
  10. 【MAC技巧】 MAC下两款免费的风扇调节工具
  11. 魔方cfop公式软件_【二阶篇】一个万能公式还原二阶魔方
  12. 正则表达式的‘前瞻后顾’
  13. wuc-tab标签点击不了_微信公众号新增标签功能,格力被中国移动取消竞标资格,全国电子无偿献血证上线,QQ新增辣椒酱表情,这就是今天的其他大新闻!...
  14. 自学Python标准库(1)
  15. N多系统单点登录,实现、解决方案。四种解决方案
  16. 毕达哥拉斯定理(又称 勾股定理)的证明
  17. JAVA计算机毕业设计基于vue技术的汽车维修检测系统设计与实现源码+数据库+系统+lw文档
  18. private方法可以被代理吗?
  19. 李航《统计学习方法》第2版 第1章课后习题答案
  20. 京东App秒杀抢购流程接口分析

热门文章

  1. 如何在swift中实现数组的深拷贝
  2. remove Host from VMware cluster
  3. MySQL JDBC URL参数(转)
  4. 李洪强iOS开发之OC[011] - 有参方法的声明实现以及调用练习
  5. 不创建临时变量,交换两整数的值
  6. apache-common-pool2(配置参数详解,以及资源回收,从池中获取资源,将资源返还给池...
  7. CentOs6.5配置安装DRBD
  8. MVC模式中编写一个登录的Servlet
  9. 怀疑Alexa算法调整,清理一批网站
  10. mysql 四种隔离级别