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

时间:2010-02-19 15:46:45

标签: bash unix scripting indentation

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 个答案:

答案 0 :(得分:19)

使用bash(至少3.2)和ksh(不了解其他人)你可以使用<<-缩进here-documents,并且前导标签将被剥离(不是空格,只有标签),例如< / p>

if [...]; then
    cat <<-EOF
        some text
    EOF
fi

答案 1 :(得分:4)

是的,您可以使用<<-“缩进”(请参阅​​此处文档的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

答案 2 :(得分:2)

这不是bash缩进问题,这是一个here-file问题。您在<<之后指定的标签,即EOF,必须单独出现在一行中,而不包含前导或尾随空格。

对于here-file本身,它用作包含类型的缩进。

答案 3 :(得分:0)

Mouviciel是对的。

如果要保留缩进,可以将here-file文本放在单独的文件中。然而,您必须自己处理替换。