以下代码段给出错误: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
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除<<EOFthen 脚本只是登录但不执行后续命令并无限期地保持登录状态。
有什么办法可以解决这个问题?我犯了什么错误?
该<<EOF指示的开始定界符
Here 文档是一个特殊用途的代码块。它使用一种 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
}
Run Code Online (Sandbox Code Playgroud)
否则它将继续搜索限制字符串 ( EOF),并在到达文件末尾时因语法错误而失败。
请注意,限制字符串必须放在行首,前面不能有空格。