2017-08-08 118 views
2

這下面的代碼段給錯誤:14:語法錯誤:文件意外結束EOF問題shell腳本

#!/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然後腳本只是登錄,但不執行後續命令和住無限期登錄。

有什麼可以解決這個問題?我正在犯什麼錯誤?

回答

3

<<EOF表示heredoc

A here document is a special-purpose code block. It uses a form of I/O redirection to feed a command list to an interactive program or a command, such as ftp, cat, or the ex text editor.

開始然後,你應該關閉定界符代碼塊,這樣的:

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 ), ,並在達到文件結尾時出現語法錯誤。

請注意,限制字符串必須放在行首 之前,前面沒有空格。

+0

非常感謝。它工作完美。 – Leon