2
我確信有一個簡單的方法可以做到這一點,但我沒有找到它。我想要做的是使用lftp執行一系列命令,並且我想避免在可能的情況下反覆連接到服務器。使用lftp執行動態命令 - 多個命令
基本上,我有一個文件,其中包含一個完整的ftp目錄在服務器上的列表。我想連接到服務器,然後執行類似如下:(假設在這一點上,我已經轉換的文本文件導入使用cat線的陣列)
for f in "${myarray}"
do
cd $f;
nlist >> $f.txt;
cd ..;
done
當然,這並不工作,但我不得不想像我有一個簡單的解決方案,我正在努力完成。
對於shell腳本,我很缺乏經驗。有什麼建議麼?
謝謝。這正是我需要的。由於我(我沒有提到這一點)在一個窗口框中工作,所以有一些增加了行結尾的複雜性--->我認爲可能是錯誤的只有兩件事是關於你所說的(儘管這可能是因爲的窗戶)。我簡直無法讓它與名稱中有空格的目錄一起工作 - 這在運行時不會成爲問題,但它讓我在測試中感到困惑。另外,我必須在=符號後面加雙引號 - 它表示list_commands = $ list_commands才能使其工作。絕對讓我在需要的地方。謝謝! – user1167442
@ user1167442缺少雙引號是錯誤的,修正了。如果您使用IFS = $'\ r'而不是'IFS =',則輸入文件可以具有Windows行結束符。有空間的目錄應該工作(我想,我還沒有測試過),出了什麼問題? – Gilles
我嘗試了多個變體的轉義和繞過變量的雙引號,如下所示:cd \「$ dir \」,但是在服務器和輸出中都發生了什麼,它只將它讀作請求的第一部分 - 例如cd「Folder D」被解釋爲cd「Folder」「D」,並且輸出將在文件「Folder.txt」和「D.txt」中。不過,我並不太擔心它,因爲在運行時,它只能使用預先轉義的大寫非空格字符串。雖然奇怪。我用tr -d「\ r」很容易地處理了windows \ r問題。非常便利。 – user1167442