bash脚本的正确缩进是什么?
bash脚本的正确缩进是什么?作为一个java/c++猴子,我虔诚地缩进我的代码。但似乎不允许您缩进此代码: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 ==================================
#! /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