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

bash脚本的正确缩进是什么?,bash,unix,scripting,indentation,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 ==================================

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
#/bin/bash
如果[$#=0]
然后
#没有参数=>只需对标准输出执行即可。
echo“没有参数”
其他的

cat这不是bash缩进问题,这是一个here文件问题。您在Mouviciel之后指定的标签是正确的


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

使用bash(至少3.2版)和ksh(不知道其他版本)可以使用
缩进此处的文档。是的,您可以使用
缩进,另一件有用的事情是,引用开头分隔符可以防止扩展(参数、命令替换等)here文档:
foo查看我对另一个答案的评论,您不能缩进here文档的结束标记。大多数使用HEREDOC的编程语言在缩进它们时都有问题。这并不是bash特有的。这有点不正确,here文档的结束标记仍然不能缩进。事实上,这是我最大的问题抱怨这里的文档,他们只去掉了前导标签(我想要两个空格作为缩进),而且你仍然不能缩进最后一个标记。@haridsv实际上你可以在
GNU bash 4.3.11
dash 0.5.7
中缩进最后一个标记,谢谢@törzsmókus,我不知道这个增强。有一个解决方案(

if [...]; then
    cat <<-EOF
        some text
    EOF
fi
if [ $# = 0 ]
then
        # there was no arguments => just do to standard output.
        echo "there are no parameters"
else
    cat <<-EOF
    ==========================================================
    ==========================================================
    ==========================================================
    ==========================================================
    DESCRIPTION:

    $1
    ----------------------------------------------------------
    EOF
fi