这里的文档和输入重定向为 -

这里的文档和输入重定向为 -

下面的命令有什么作用?特别是我不明白-在输入重定向中的作用。

 cat <<-EOF | command $argument
    first option


    second option
    EOF

-输入重定向中是否强制有?

答案1

man bash

如果重定向运算符为 <<-,则所有前导制表符将从输入行和包含定界符的行中去除。这允许 shell 脚本中的此处文档以自然的方式缩进。

$ cat <<-EOF
    foo
    bar
    EOF
foo
bar

答案2

关于您关于此处文档的问题,我想在上面克里斯的回答中添加一些内容

cat - filename <<-EOF
    foo
    bar
    EOF

如果您注意到上面的代码;有2个-。两者都有不同的目的 1)-EOF截断分隔符中的前导制表符。

2) cat - filename:基本上打印第一个标准输入内容(直到找到分隔符)+文件名内容。 cat 专门提供了这个-来控制标准输入和文件内容的顺序。在上述情况下,更改命令cat filename -将打印文件名和标准输入内容(直到找到分隔符)

相关内容