shell脚本中的'End'命令

时间:2015-01-06 13:47:12

标签: bash shell unix heredoc

我正在尝试理解一些对我来说非常混乱的shell脚本。

这是片段。我的问题是:

a)<<-做了什么?它是否像标准表达式。我只知道>>><进行重定向。

b)End可能意味着什么?我假设从'n'到'somefilename.dat.summary'的所有值都是某种输入,发送到脚本'collapse4'并且它的输出被重定向到/ dev / null,我学到的是一个地方我们发送不需要的数据。

/usr/can/bin/collapse4<<-End > /dev/null
n
n
1
9 14
y
1
26
8
30
8
1
23
3
1
n
n
y
n
n
somefilename.dat
somefilename.dat.summary
End

1 个答案:

答案 0 :(得分:2)

此命令向/usr/can/bin/collapse4发送一个文本块,并将输出重定向到/dev/null

此结构在此处称为doc。 End是您“调用”要插入的文本的方式。完成后,在新行的最开头用相同的单词指示块的结尾。

但你可以称之为无论如何。这样做也是如此:

/usr/can/bin/collapse4<<-HelloJustTesting > /dev/null
n
n
1
...
n
somefilename.dat
somefilename.dat.summary
HelloJustTesting

How can I write a here doc to a file in Bash script?中的更多信息:

  

在shell脚本中,您可能希望使用缩进来生成代码   可读,但这会产生不良的缩进效果   您在此处的文档中的文字。在这种情况下,请使用<<-   (后跟短划线)禁用前导标签(注意要测试的标签)   这将需要用选项卡替换前导空格   字符,因为我无法在此处打印实际的制表符。)