在馬克B的同一精神的答案,我不認爲你可以做到所有的內部lftp。 特別是我不認爲它支持用戶變量...(我應該檢查...)
因此,對於某些目的,您可以調用從lftp腳本內部啓動lftp的shell。例如:
# This is a lftp script (like yours)
ls -tr| ! "tail -1|awk '{print $NF}'"
'!'傳遞給unix shell。被稱爲「尾巴」的是系統尾巴,而不是一些lftp命令。 awk也是如此,我只用它來獲取dir的名稱(lft的ls給出所有文件的權限等等)。
對於更復雜的事情(根據您的要求),我相信你會更好與其他shell命令一樣,使用lftp的shell腳本。你的例子會變成這樣:
# Call lftp to log in and do 'ls', capture the ouput and process it.
sourceBuildDir=$(lftp -c "open ${sourceEnv}:${sourcePass}@${sourceHost}; ls" \
|tail -1|awk '{print $NF}');
echo "I am about to download $sourceBuildDir";
# Call lftp with the processed dir name and do the rest
# (btw. did you consider using the 'mirror' command?)
lftp -c "open ${sourceEnv}:${sourcePass}@${sourceHost}; \
cd $sourceBuildDir/distribution; mget *";
P.S. 有時lftp命令產生額外的東西,如「[FEAT negotiation ...]」,可能會破壞腳本。你也許可以通過重複lftp命令兩次來解決問題,這樣他們第二次成功時不需要通過lftp進一步協商。
希望這有助於走上正確的軌道!乾杯。
sftp用於傳輸文件。如果你想運行遠程命令,你需要全面的SSH來調用遠程shell –
嗨馬克B, 你能請指教我如何創建一個SSH連接與自動密碼注入(我不能使用關鍵認證 - 公司機器)? 謝謝。 – Rob