我收到以下错误,该错误在我的代码的最后一行标记(为空):
syntax error: unexpected end of file
我无法弄清楚为什么会这样说。我只是尝试使用here-doc
进行ssh连接:
#!/bin/sh
connectToServer() {
ssh -t root@$1 <<- ENDSSH
echo "Connected to server!"
ENDSSH
}
connectToServer $1
这段代码出了什么问题?
修改
感谢帮助我排除故障的那些人。我的剧本有一些问题;我在线上使用空格:
echo "Connected to server"
而不是制表符。我还在结束ENDSSH
之前包括空格,这导致了EOF。这些更改是我的问题的一部分,但解决它的最后一件事是删除在我关闭ENDSSH
之后出现的额外空格字符。
答案 0 :(得分:13)
在关闭ENDSSH
之前,问题是空格。取出ENDSSH
之前的所有前导空格。
答案 1 :(得分:8)
ENDSSH
标记必须位于左边距:
connectToServer() {
ssh -t root@$1 << ENDSSH
echo "Connected to server!"
ENDSSH
}
使用<<- ENDSSH
时,您可以缩进标记,但必须使用 Tab 字符缩进,而不是空格。
答案 2 :(得分:1)
使用<<-
运算符时,只会从here文档和包含标记的行中删除前导标签。您似乎使用空格缩进结束标记,因此该行似乎是此文档的一部分,并且由于此文档永远不会关闭,因此您在解析文件时会到达该文件的末尾。