2016-09-23 131 views
0

我是Unix腳本中的新成員,下面是我的腳本,執行此文件時出現此錯誤: /root/bin/autodownload.sh:第20行:語法錯誤:文件意外結束Unix Shell SFTP自動下載文件

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'放在行首 - 如果它不在行首,它不會被解釋爲here文檔的結尾。 – Petesh

+0

或使用'<< - EOF',它允許/需要縮進標籤。關閉'EOF'必須縮進(儘可能多)。裏面的塊可以引導標籤和空格。我經常使用'\ 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