使用cat <<-EOF

时间:2019-11-15 06:22:28

标签: bash

cat <<-EOF
    #lots of text
EOF

这种语法肯定可以简化许多行的管理,并且仅是一次对cat的调用,而不是一堆echo的调用。 但是使用<<-是否安全?

有许多文本编辑器设置,这些设置可能会弄乱空格和制表符,并且很讨厌跟踪这些内容。 (便携性是一个问题)

仅使用<<会使源代码看起来很呆板,没有缩进。

有没有更安全,更清洁的方法?

我做了一个小小的编辑,现在看来它并不是以任何观点为基础的。

1 个答案:

答案 0 :(得分:1)

您应该意识到某些用户将其编辑器设置为自动将制表符转换为空格。因此,当您在同一个脚本上与多个用户一起工作时,为此设置一些基本规则非常重要,这很烦人,因为最终您将面临一天的tab-vs-spaces战争。此外,我经常认为制表符很邪恶。它们很好地用作字段分隔符,但是当可视化依赖于字段分隔符时,它们却很糟糕。一切都取决于定义制表符的位置,并且可以在编辑器之间,编辑器之间以及终端与终端之间更改。有时。制表符定义为8的倍数,有时是4的倍数。甚至还有Posix命令tabs,您可以通过该命令以任意方式设置制表符

$ tabs 1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67

所以...标签是邪恶的!

我对您的建议是使用以下内容:

 printf "%s\n" 'fantastic line1' \
               'awesome line2'   \
               'amazing line3'   \
               'unrivaled line4'