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

bash脚本的正确缩进是什么?

  •  6
  • sixtyfootersdude  · 技术社区  · 14 年前

    bash脚本的正确缩进是什么?作为Java/c++猴子,我虔诚地缩进我的代码。但似乎不允许您缩进此代码:

    #! /bin/bash
    
    if [ $# = 0 ]
    then
            # there was no arguments => just do to standard output.
            echo "there are no parameters"
    else
    cat << EOF
    ==========================================================
    ==========================================================
    ==========================================================
    ==========================================================
    DESCRIPTION:
    
    $1
    ----------------------------------------------------------
    
    EOF
    fi
    

    当缩进时,它不识别EOF,如果您只是未插入EOF(混淆),它将打印缩进。

    问: bash脚本的适当缩进是什么?

    4 回复  |  直到 14 年前
        1
  •  19
  •   Dan Andreatta    14 年前

    使用bash(至少3.2)和ksh(不了解其他人),您可以使用 <<- ,并且前面的制表符将被删除(不是空格,只有制表符),例如

    if [...]; then
        cat <<-EOF
            some text
        EOF
    fi
    
        2
  •  4
  •   ghostdog74    14 年前

    是的,您可以使用 <<- (请参阅此处文档的bash手册页)

    if [ $# = 0 ]
    then
            # there was no arguments => just do to standard output.
            echo "there are no parameters"
    else
        cat <<-EOF
        ==========================================================
        ==========================================================
        ==========================================================
        ==========================================================
        DESCRIPTION:
    
        $1
        ----------------------------------------------------------
        EOF
    fi
    
        3
  •  2
  •   mouviciel    14 年前

    这不是bash缩进问题,而是这里的文件问题。在后面指定的标签 << ,即 EOF ,必须单独出现在一行中,没有前导空格或尾随空格。

    对于here文件本身,它被用作类型,包括缩进。

        4
  •  0
  •   Steve Emmerson    14 年前

    Mouviciel是正确的。

    如果要保留缩进,可以将此处文件文本放在单独的文件中。然而,您将不得不自己处理替换。