14

コードの最後の行 (空) に次のエラーが表示されます。

syntax error: unexpected end of file

なぜこれを言っているのか理解できません。私は単にhere-docssh接続にaを使用しようとしています:

#!/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 に答える