我想在我的bash脚本中缩进,以便我的脚本看起来更有条理,但不希望打印空格。
如果我有命令
printf "<image>
<<include etc/image.conf>>
</image>" > file.txt
我希望file.txt看起来像
<image>
<<include etc/image.conf>>
</image>
而不是
<image>
<<include etc/image.conf>>
</image>
问题在于我不希望我的脚本看起来像这样
While Loop
If Statement
printf "<image>
<<include etc/image.conf>>
</image>" > file.txt
Command Here
End If
End While
我只是希望它看起来有点整洁
答案 0 :(得分:6)
使用heredoc:
cat <<- EOF > file.txt
<image>
<<include etc/image.conf>>
</image>
EOF
(注意:缩进应该是标签:硬标签是缩进的正确选择的另一个原因。)您可以在缩进中使用任意数量的标签,并且在传递给{{{{{\ n之前)它们将被bash剥离。 1}}。缩进也被分隔符剥离,因此您的最终结果将如下所示:
cat
请注意,这将对文本执行变量扩展等。如果您想避免这种情况,请引用分隔符。例如,While Loop
If Statement
cat <<- EOF > file.txt
<image>
<<include etc/image.conf>>
</image>
EOF
Command Here
End If
End While
答案 1 :(得分:1)
为了使脚本更具可读性并防止空格妨碍:
printf "%s\n%s\n%s\n" "<image>" \
"<<include etc/image.conf>>" \
"</image>" > file.txt