代码之家  ›  专栏  ›  技术社区  ›  theycallmemorty

在Shell脚本中阻止注释

  •  210
  • theycallmemorty  · 技术社区  · 17 年前

    10 回复  |  直到 11 年前
        1
  •  392
  •   Asclepius    9 年前

    在bash中:

    #!/bin/bash
    echo before comment
    : <<'END'
    bla bla
    blurfl
    END
    echo after comment
    

    这个 ' ' 周围 END 分隔符是很重要的,否则块内的内容就很重要,例如 $(command) 将被解析并执行。

    有关说明,请参阅 this 和 this 问题

        2
  •  99
  •   Jens    9 年前

    shell脚本上没有块注释。

    使用 vi (是的, 不及物动词 )你可以很容易地从第二行评论 N 到 M

    <ESC>
    :10,100s/^/#/
    

    并与联合国发表评论

    <ESC>
    :10,100s/^#//
    

    (即,从第10行到第100行,替换行开始(^),后跟带注释的#/。)

    几乎在任何地方都是普遍存在的 /bin/sh .

        3
  •  57
  •   Jean    13 年前

    您可以使用:

    if [ 1 -eq 0 ]; then
      echo "The code that you want commented out goes here."
      echo "This echo statement will not be called."
    fi
    
        4
  •  50
  •   Relative0    7 年前

    : ' 开 ' 结束。

    例如:

    : '
    This is a
    very neat comment
    in bash
    '
    

    这是维加斯的例子 here

        5
  •  29
  •   devnull    12 年前

    以下应该适用于 sh , bash , ksh 和 zsh

    要注释的代码块可以放在内部 BEGINCOMMENT ENDCOMMENT :

    [ -z $BASH ] || shopt -s expand_aliases
    alias BEGINCOMMENT="if [ ]; then"
    alias ENDCOMMENT="fi"
    
    BEGINCOMMENT
      echo "This line appears in a commented block"
      echo "And this one too!"
    ENDCOMMENT
    
    echo "This is outside the commented block"
    

    执行上述代码将导致:

    This is outside the commented block
    

    为了 取消批注 比如说,代码块就是这样注释的

    alias BEGINCOMMENT="if : ; then"
    

    alias BEGINCOMMENT="if [ ]; then"
    

    在上面的例子中。

        6
  •  25
  •   vanvliet.eric    13 年前

    __='
    blah blah comment.
    '
    
        7
  •  15
  •   stefanB    17 年前

    在Vim中:

    1. 转到要注释的块的第一行
    2. shift-V (进入视觉模式),在块中上下高亮显示线
    3. 在选择时执行以下操作 :s/^/#/
    4. 该命令将如下所示:

        :'<,'>s/^/#
      
    5. 按回车键

    shift-V
    jjj
    :s/^/#
    <enter>
    
        8
  •  4
  •   horta    11 年前

    Ctrl-V  
    Highlight first element in rows you want commented  
    Shift-i  
    #  
    esc  
    

    取消注释将是:

    Ctrl-V  
    Highlight #'s  
    d  
    l  
    

    这是vi做这类事情的交互方式,而不是计算或读取行号。

    最后,在Gvim中,使用ctrl-q进入视觉块模式,而不是ctrl-v(因为这是粘贴的快捷方式)。

        9
  •  3
  •   Rusty75    6 年前

    我的解决方案:大多数编辑器都有块选择模式。只需使用它在所有要注释的行中添加#。

    记事本示例:

    要创建:Alt-mousedrag down,请按#。

        10
  •  2
  •   mivk    9 年前

    sunny256接受的答案中的heredoc技巧的一个变体是使用Perl关键字进行注释。如果您的注释实际上是某种文档,那么您可以开始在注释块中使用Perl语法,这允许您以良好的格式将其打印出来,并将其转换为手册页,等等。

    就外壳而言,您只需更换 'END' 具有 '=cut' .

    echo "before comment"
    : <<'=cut'
    =pod
    
    =head1 NAME
       podtest.sh - Example shell script with embedded POD documentation
    
    etc.
    
    =cut
    echo "after comment"
    

    (于上找到) Embedding documentation in shell script

        11
  •  1
  •   Ari Singh    5 年前

    您可以将要注释的代码放入函数中。这样做的一个好处是,您可以通过在定义之后调用函数来“取消注释”。

    除非您计划通过调用函数来“取消注释”,否则函数中的文本不必语法正确。

    ignored() {
      echo this is  comment
      echo another line of comment
    }
    

        12
  •  0
  •   mardocheo    8 年前

    另一种模式是: 如果编辑器没有“块注释”选项,

    1. 从正在处理的上一个文件中,仅选择要注释的零件
    2. 复制并粘贴到新临时文件的窗口中。。。
    3. 输入为替换字符串:'\n#'

    完成

    它适用于任何编辑器

        13
  •  0
  •   Ynnub    6 年前

    我喜欢单行打开和关闭:

    if [ ]; then ##
        ...
        ...
    fi; ##
    

        14
  •  0
  •   Mohsen Banan    5 年前

    让我们把所有这些想法和建议中最好的结合起来。

    alias _CommentBegin_=": <<'_CommentEnd_'"
    

    如前所述,单引号非常重要,因为没有它们 $(commandName)和${varName}将被计算。

    您可以将其用作:

    _CommentBegin_
    echo "bash code"
    or 
    none code can be in here
    _CommentEnd_
    

    别名使用法更明显、更美观。

        15
  •  0
  •   Suraj Rao Raas Masood    5 年前

    在vscode中 控制键 + K ( 控制键 + + U 取消注释)。