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

six*_*ude 6 unix bash 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
Run Code Online (Sandbox Code Playgroud)

缩进时,它不能识别EOF,如果你只是缩进EOF(令人困惑),它会打印缩进.

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

Dan*_*tta 20

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

if [...]; then
    cat <<-EOF
        some text
    EOF
fi
Run Code Online (Sandbox Code Playgroud)

  • 另一个有用的知识是引用开始分隔符可以防止here-document的扩展(参数,命令替换等):`foo <<"EOF"`它们可以合并:`foo << - "EOF "`.后者对于注释掉代码块很有用(你可以使用no-op`:`作为接收命令或省略它).此外,当使用`<< - `时,您可以选择是否要缩进结束分隔符(或任何行). (2认同)