在shell脚本中的EOF问题

以下代码段给出错误: 14:语法错误:意外的文件结束

#!/bin/bash func_some() { cd some_directory lftp -u user,'password' sftp://192.168.xx.xx <<EOF cd some_directory mget ADMS_report_*${2}${3}${4}*.txt } #------------------------------ Main function ------------------------------ func_some 2017 08 08 2017 08 07 

但是,如果我删除<<EOF脚本只是login,但不执行后续的命令,并无限期地保持login。

有什么可以解决这个问题? 我正在犯什么错误?

<<EOF表示heredoc的开始

这里的文件是一个特殊用途的代码块。 它使用I / O重定向的形式将命令列表提供给交互式程序或命令,例如ftp,cat或ex文本编辑器。

你应该关闭你的heredoc代码块,就像这样:

 func_some() { cd some_directory lftp -u user,'password' sftp://192.168.xx.xx <<EOF cd some_directory mget ADMS_report_*${2}${3}${4}*.txt EOF } 

否则将继续搜索限制字符串( EOF ),并在到达文件结尾时出现语法错误。

请注意,限制字符串必须放在行的开头,前面没有空格。