Создание сценариев FTP-команд с использованием входного потока непосредственно на ftp
- это, как правило, плохая идея: в нем отсутствует какая-либо обработка ошибок, он может полностью ошибаться и у вас нет шансов управлять им.Если у вас есть возможность использовать клиент командной строки saner, такой как lftp
, curl
или аналогичный сценариев.
Кроме того, очень плохая идея перебирать файлы с помощью
files=`ls files`
for file in $files
Несколько лучшее решение:
for file in *
, но оно не масштабируется: если *
(или вывод ls
) расширится больше, чем буфер командной строки, произойдет сбой.Довольно масштабируемое решение выглядит примерно так:
find . | while read file do
do_something_with $file
done
... и все же это, вероятно, не то, что вы хотите.Фактически, если вы просто хотите перенести файлы из источника в место назначения, а затем удалить файлы в источнике, вы можете просто использовать lftp
с командой mput
и опцию -E
для удаления файла после передачи или что-то подобное с rsync --remove-source-files
.