2016-09-23 4 views
0

Я новичок в Unix Script, ниже мой скрипт, я получаю эту ошибку при выполнении этого файла: /root/bin/autodownload.sh: строка 20: синтаксическая ошибка: неожиданный конец файлаUnix Shell SFTP Auto Download File

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

поставил 'EOF' в начале строки - это не интерпретируется как конец здесь документа, если это не в начале строки. – Petesh

+0

ИЛИ используйте '<< - EOF', который позволяет/требует закладки для отступов. Закрытие 'EOF' должно иметь вкладку с отступом (сколько угодно). внутри блока могут быть ведущие вкладки и пробелы. Я часто использую '\ t \ t \ t \ s \ s \ s \ s' (не те литеральные значения, просто обычные ключи и ), чтобы иметь 4-х сторонний отступ (скажем, для комментариев или по другим причинам). Удачи. – shellter

+0

@shellter '<< - EOM' * требует * вкладок для поведения« отстранения »/« игнорирования », что делает его действительно утонченным и слишком легким, чтобы испортить – Petesh

ответ

0

Попробуйте это;

Необходимо удалить пробелы перед EOF. EOF должен быть в левом поле:

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

done