关于 shell 中的单行注释和多行注释
单行注释
众所周知 ,使用#
比如想要注释 echo "Hello World"
[root@test ~]# vim test.sh
# echo "Hello World"
多行注释
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 () {
Cmd line 1
Cmd line 2
Cmd line 3
Cmd line 4
}文章来源:https://www.toymoban.com/news/detail-611624.html
综合所述,即使 Shell 不能多行注释,但是我们通过其他的一些方法,仍然可以实现这样的功能, 其中函数定义的方式相比之下更加强大,即有效的避免了单双引号的问题,同时也避免了注释模块的执行效率问题。文章来源地址https://www.toymoban.com/news/detail-611624.html
到了这里,关于Linux:shell 中的单行注释和多行注释的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!