【问题标题】:what does #+ mean in bash scripting?#+ 在 bash 脚本中是什么意思?
【发布时间】:2019-04-26 21:51:11
【问题描述】:

我在https://www.tldp.org/LDP/abs/html/special-chars.html 上阅读有关 bash 脚本的教程 并注意到一些 cmets 以 #+ 而不是 #

开头
echo ls -l | sh
#  Passes the output of "echo ls -l" to the shell,
#+ with the same result as a simple "ls -l"

我猜作者决定使用#+ 来提及上一行的继续评论。 是这种情况吗?它是 bash 中的常见约定吗?

【问题讨论】:

  • 这只是他们自己的(愚蠢的)约定(用于评论继续)。顺便说一句,ABS 曾经被 Bash 人所反对,因为它曾经充满了反模式。我不知道最近的修订情况如何,但我相信那里有更好的来源。
  • @gniourf_gniourf 你能推荐一两个更好的来源吗?
  • 查看Bash tag 中的资源。我猜 Lhunath 的 Bash 指南一定很好……至少它将专注于编写正确的脚本(你知道,引用扩展,不以愚蠢的方式使用外部工具等)。 BashFAQ 也很棒(虽然不是真正的教程,但绝对值得一读!)。
  • 谢谢! @gniourf_gniourf

标签: bash


【解决方案1】:

评论以# 开头。没有与 cmets 相关的约定(嗯,它们应该是可读的并且关于代码......)。该标准没有提到评论应该有什么语法。 # 后面的字符串没有被解析,所以#+ 等价于#!!@#$%^&*() 并且在被 Bash 解析时并没有什么特别之处。 #+ 只是作者的约定,如果他们没有在上一行中结束句子,则在下一行继续评论。

【讨论】:

    【解决方案2】:

    这不是一个约定,但在这里,我假设像你一样,作者想链接两个 cmets。

    在 bash 中真正做到这一点的方法是使用多行注释:

        : '
        This is a
        multiline comment.
        '
    

    请注意:' 之间的空格很重要。

    【讨论】:

    • 错了,这是多行注释。比多 # 更容易使用 :)
    • 注释 # 会被 bash 忽略,但是这个,bash 会尝试运行它。
    • 对于那些对此有疑问的人,这里有一个备忘单:devhints.io/bash: ' 多行。我一直使用它没有问题。
    • : 是 POSIX 指定的 shell 特殊实用程序,其(原始;))目的是编写空的 ifwhile 语句,即。 if smth; then :; else :; fi。 POSIX 文档可用here
    • @KamilCuk:由于true: 都是内置命令,因此shell 不太可能执行fork()。但我不会那样写多行评论。任何体面的编辑器都可以让您在一个范围内的每一行的开头插入一个#,而无需输入 N 次。
    猜你喜欢
    • 2021-11-25
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多