Sam*_*Sam 0 bash printf indentation
我想在我的bash脚本中缩进,以便我的脚本看起来更有条理,但不希望打印空格.
如果我有命令
printf "<image>
<<include etc/image.conf>>
</image>" > file.txt
Run Code Online (Sandbox Code Playgroud)
我希望file.txt看起来像
<image>
<<include etc/image.conf>>
</image>
Run Code Online (Sandbox Code Playgroud)
代替
<image>
<<include etc/image.conf>>
</image>
Run Code Online (Sandbox Code Playgroud)
问题是我不希望我的脚本看起来像这样
While Loop
If Statement
printf "<image>
<<include etc/image.conf>>
</image>" > file.txt
Command Here
End If
End While
Run Code Online (Sandbox Code Playgroud)
我只是想让它看起来有点整洁
使用heredoc:
cat <<- EOF > file.txt
<image>
<<include etc/image.conf>>
</image>
EOF
Run Code Online (Sandbox Code Playgroud)
(注意:缩进应该是制表符:硬标签是缩进的正确选择的另一个原因.)您可以在缩进中使用任意数量的制表符,并且在传递之前它们将被bash剥离cat.缩进也被分隔符剥离,因此您的最终结果将如下所示:
While Loop
If Statement
cat <<- EOF > file.txt
<image>
<<include etc/image.conf>>
</image>
EOF
Command Here
End If
End While
Run Code Online (Sandbox Code Playgroud)
请注意,这将对文本执行变量扩展等.如果您想避免这种情况,请引用分隔符.例如,cat <<- 'EOF' > file.txt
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |