美文网首页
Bash使用Here Document实现多行注释

Bash使用Here Document实现多行注释

作者: custa | 来源:发表于2015-04-25 16:14 被阅读300次

    一、最好用的格式,即使注释包括语法错误内容也支持
    : <<\EOF
    注释
    EOF

    Comment:~ # cat comment.sh
    : <<\EOE # 这里需要\。“EOF”使用其它字符串也行,只要头尾匹配即可。
    echo a
    $(echo b)
    `
    (
    {
    [
    EOE
    echo c
    Comment:~ # bash -x comment.sh
    +[1::comment.sh] :
    +[9::comment.sh] echo c
    c

    二、其它不完整的格式
    网络上搜索到的一些其它格式,这里列出这些格式存在的问题,用以提醒不要使用!

    1. 注释中反引号``或$()会被执行,不匹配时会报错。EOF为其它字符串效果相同(除单引号、反引号、减号)。

    Comment:~ # cat comment1.sh
    : <<EOF
    command not found
    echo a
    $( echo b)
    echo c
    echo d
    EOF echo e Comment:~ # bash -x comment1.sh +[1::comment1.sh] : ++[1::comment1.sh] echo a ++[1::comment1.sh] echo b ++[1::comment1.sh] echo d comment1.sh: line 1: bad substitution: no closing "" in `

    +[2::comment1.sh] echo e
    e

    1. 注释后的语句全被忽略

    2.1
    Comment:~ # cat comment2.sh
    : <<'EOF
    echo a
    echo b`
    EOF'
    echo c
    Comment:~ # bash -x comment2.sh
    +[1::comment2.sh] :

    2.2
    Comment:~ # cat comment3.sh
    : <<EOF'
    echo a
    echo b`
    'EOF
    echo c
    Comment:~ # bash -x comment3.sh
    +[1::comment3.sh] :

    2.3
    Comment:~ # cat comment4.sh
    : <<'
    echo a
    "echo b`
    (
    ]
    }
    '
    echo c
    Comment:~ # bash -x comment4.sh
    +[1::comment4.sh] :

    2.4 if 或while会检查语法问题,不要使用

    if [ ]; then
    注释
    fi

    while false; do
    注释
    done

    相关文章

      网友评论

          本文标题:Bash使用Here Document实现多行注释

          本文链接:https://www.haomeiwen.com/subject/whypfttx.html