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脚本的正确缩进是什么?
答案 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文本放在单独的文件中。然而,您必须自己处理替换。