2016-09-23 1 views
0

Ich bin neu in Unix-Skript, unten ist mein Skript, bekomme ich diesen Fehler beim Ausführen dieser Datei: /root/bin/autodownload.sh: Zeile 20: Syntaxfehler: unerwartetes Ende der DateiUnix Shell SFTP Auto Download-Datei

while [ 1 ] 
do 
     sftp -o IdentityFile=/root/.ssh/ixxx [email protected] << EOF  
     cd outbound 
     lcd /home/xxx/  
     get Abc* 
     bye 
     EOF 
     sleep 60 
done 
+0

setzen die 'EOF' am Anfang der Zeile - es ist nicht als das Ende des hier Dokument interpretiert, wenn es nicht am Anfang der Zeile ist. – Petesh

+0

ODER verwenden Sie '<< - EOF', die Tabs für den Einzug erlaubt/erfordert. Das schließende 'EOF' muss eingerückt sein (so viele wie du willst). Der Block im Inneren kann führende Tabs und Leerzeichen sein. Ich benutze oft '\ t \ t \ t \ s \ s \ s \ s' (nicht diese wörtlichen Werte, nur die regulären Schlüssel und ), um einen Einrückstrich mit zwei Leerzeichen zu haben (zB für Kommentare oder andere Gründe). Viel Glück. – shellter

+0

@shellter '<< - EOM' * erfordert * Tabs für das 'stripping'/'ignoring' Verhalten, was es wirklich knifflig macht und alles zu leicht vermasselt – Petesh

Antwort

0

Versuchen Sie dies;

Sie müssen Leerzeichen vor EOF löschen. EOF sollte am linken Rand sein:

#!/bin/bash 
while [ 1 ] 
do 
     sftp [email protected] << EOF 
     cd outbound 
     lcd /home/mdogru/  
     get Abc* 
     bye 
EOF 
     sleep 60 

done