2016-09-23 91 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