14

我收到以下错误,该错误在我的代码的最后一行(为空)上标记:

syntax error: unexpected end of file

我想不通它为什么这么说。我只是想将 ahere-doc用于 ssh 连接:

#!/bin/sh

connectToServer() {
   ssh -t root@$1 <<- ENDSSH
      echo "Connected to server!"
   ENDSSH
}

connectToServer $1

这段代码有什么问题?

编辑

感谢那些帮助我解决此问题的人。我的脚本有一些问题;我在行上使用空格:

echo "Connected to server" 

而不是制表符。我还包括ENDSSH导致 EOF 的关闭前的空格。这些更改是我的问题的一部分,但解决它的最后一件事是删除在我关闭之后出现的额外空格字符ENDSSH

4

3 回答 3

17

问题是关闭前的空格ENDSSH。去掉之前的所有前导空格ENDSSH

于 2013-11-14T19:28:44.710 回答
10

ENDSSH标记必须在左边距:

connectToServer() {
   ssh -t root@$1 << ENDSSH
      echo "Connected to server!"
ENDSSH
}

使用<<- ENDSSH时可以缩进标记,但必须用Tab字符缩进,而不是空格。

于 2013-11-14T19:29:43.197 回答
1

使用<<-操作符时,只有前导制表符会从此处文档和包含标记的行中去除。您似乎正在用空格缩进结束标记,因此该行似乎是此处文档的一部分,并且由于此处文档永远不会关闭,因此您在解析文件时到达了文件的末尾。

于 2013-11-14T19:32:45.910 回答