2011-05-19 40 views

回答

1

有這麼多的ftp客戶端,其中許多不一定遵循std返回約定,你必須做一些簡單的測試,然後進行相應的編碼。

如果幸運的話,您的ftp客戶端會返回std退出代碼,並通過man ftp(您知道關於man頁面?)來記錄它們。在這種情況下,0表示成功,任何非零表示某種問題,所以非常簡單的解決方案是一樣的東西

if ftp [email protected] File remote/path ; then 
    print -- 'sucessfully sent file' 
else 
    print -u2 -- 'error sending file' 
fi 

(不太清楚的是,ftp [email protected] file remoteDir是完全正確的,(我沒有現在訪問客戶端並且多年沒有使用過ftp(你不應該使用sftp !?--)),但是我在這兩個示例中都使用相同的方式)。

您可能需要多一點控制權,所以您需要捕獲返回碼。

ftp [email protected] File remote/path 
ftp_rc=$? 

case ${ftp_rc} in 
    0) print -- 'sucessfully sent file' ;; 
    1) print -u2 'error on userID' ; exit ${ftp_rc};; 
    2) print -u2 -- 'no localFile found' ; exit ${ftp_rc};; 
esac 

我不確定1或2的含義,這些只是爲了說明。看看你的man ftp,看他們是否有文件記錄,或者做一個簡單的測試,有意識地給ftp一個錯誤,看看它是如何響應。

如果不使用或不一致STD錯誤代碼,那麼你必須捕捉FTP輸出和檢查,以確定身份,像

ftp [email protected] file remote/path > /tmp/ftp.tmp.$$ 2>&1 

case $(< /tmp/ftp.tmp.$$) in 
    sucess) print -- 'sucessfully sent file' ;; 
    bad_user) print -u2 'error on userID' ; exit 1 ;; 
    no_file) print -u2 -- 'no localFile found' ; exit 2;; 
esac 

我希望這有助於。