这里是文档符号

时间:2015-04-18 22:31:35

标签: shell heredoc

我在这里的文件中找不到关于符号的解释。在我的shell脚本中,我正在使用gnuplot绘制文件。

此代码有效:

gnuplot <<- EOF
         set xlabel "square dimension (inches)"
         set ylabel "mean survival time (seconds)"
         set term png
         set output "${plot_file}.png"
         plot "beetle.dat" using 1:2
EOF

但是,如果我没有在<<-中添加短划线并仅使用<<,则此代码无效,我收到以下错误:

./myscript: line 118: warning: here-document at line 104 delimited by end-of-file (wanted `EOF')
./myscript: line 119: syntax error: unexpected end of file

之前可能会问过这个问题,但由于特殊字符无法识别,我无法搜索。

1 个答案:

答案 0 :(得分:2)

当你说“这段代码”时,它是代码 - 还是缩进?

默认情况下,Heredocs会查找仅包含分隔符的行,因此没有前导标签或空格。 “ - ”的作用是删除前导选项卡,因此您可以根据代码的其余部分对heredoc(内容和分隔符)进行精确缩进。

因此,如果您的分隔符实际上是在代码中缩进的,那么只能在“ - ”中找到它。

https://www.gnu.org/software/bash/manual/html_node/Redirections.html

中的3.6.6