以下代码段给出错误: 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
那么脚本只是登录但不执行后续命令并且无限期地保持登录状态。
这可能是什么解决方案?我犯了什么错误?
答案 0 :(得分:4)
<<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
),
当文件结束时,语法错误失败。
请注意,限制字符串必须放在行的开头, 在它前面没有空格。