我想從遠程服務器獲取文件列表並將該列表放置在本地文件或數組中。遍歷文件列表並從遠程到本地一次獲取每個文件。 但是,ls命令不能在遠程服務器上運行,get命令不起作用。 下面是我的腳本:ls不工作在sftp korn外殼和命令不工作在循環內
#!/user/bin/ksh
Sftp [email protected] <<EOF
Cd source_path
Set -A list_value $(ls source_path)
for file in ${list_value[*]}
do
get /source_path/$file /dest_folder
If ($? -eq 0); then
rm /source_path/$file
else
echo "error"
Exit
fi
done
Bye
EOF
我甚至嘗試
ls source_path > output.txt
沒有什麼工作。在本地它使用數組,但for循環內的命令沒有得到執行。在遙控器上沒有工作。我甚至用echo *嘗試並找到。它在ls附近拋出無效命令錯誤並得到。
用四個空格前綴代碼/數據。請看[編輯幫助](http://stackoverflow.com/editing-help)。 – Cyrus
'sftp'有一個有限的命令集,我很確定它不包含'set','for/do/done','if/then/else/fi';是不是有一個原因,你不只是把一整套文件放在一個過程中,也就是說,爲什麼要存儲在一個數組中,然後遍歷數組呢? – markp
是的,我需要在文件成功傳輸到本地文件夾後刪除遠程服務器中的文件。這就是原因,我試圖一次拉出每個文件,而不是全部拉在一起。 – Kks