了解cat<< !语法

时间:2016-05-04 20:53:32

标签: bash shell

我是Bash脚本的新手。我遇到了this链接,发现了一种不寻常的cat语法。

cat << !
HOPE THIS WORKS
This sample E-mail message demonstrates how one can attach
files when sending messages with the Unix sendmail utility.
!

uuencode ${file_1} ${file_1}
uuencode ${file_2} ${file_2}
uuencode ${file_3} ${file_3}
!

&lt;&lt;&lt;&lt;&lt;&lt;&lt;意思?什么了!意思?为什么猫有开关!但是uuencode没有?

编辑:感谢您的帮助!我遇到的最后一个突出问题是为什么没有uuencode部分的开头和标记。根据我的理解,猫有<< !表示它是HEREDOC。然而uuencode似乎不是HEREDOC。是什么给了什么?

1 个答案:

答案 0 :(得分:2)

它叫做heredoc,它的构造如下:

command << MARKER
Literal text here, can contain $variables
and newlines,
    leading spaces
    and tabs... 
MARKER

并且可以使用MARKER之间的所有内容作为stdin到指定的命令。您使用的标记是可选的,在您的示例中使用!。如果您在stdin上输入命令cat,它只会将其打印到stdout:

cat << !
all this text will go to stdout
!