【问题标题】:'End' command in shell scriptshell脚本中的“结束”命令
【发布时间】:2015-03-04 04:46:43
【问题描述】:

我正在尝试理解对我来说似乎非常混乱的部分 shell 脚本。

这是sn-p。我的问题是:

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

【问题讨论】:

标签: bash shell unix heredoc


【解决方案1】:

此命令将文本块发送到/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 脚本中,您可能希望使用缩进来制作代码 可读,但是这可能会产生缩进的不良影响 您的此处文档中的文本。在这种情况下,请使用 &lt;&lt;- (后跟一个破折号)禁用前导标签(注意要测试 这你需要用制表符替换前导空格 字符,因为我无法在此处打印实际的制表符。)

【讨论】: