Перво-наперво, вы кодировали ошибку в своем маленьком скрипте:
for files in `ls`
Это должно выглядеть так:
for files in *
Разница в том, что ls
подход выиграл '• правильно обрабатывать файлы с пробелами в их именах:
$ ls -l
total 8
-rw-r--r-- 1 sarnold sarnold 15 2011-11-23 01:25 bad file
drwxr-xr-x 2 sarnold sarnold 4096 2011-11-21 03:07 blubber
$ for f in `ls` ; do echo === $f === ; done
=== bad ===
=== file ===
=== blubber ===
$ for f in * ; do echo === $f === ; done
=== bad file ===
=== blubber ===
$
Теперь перейдем к проблеме загрузки и удаления:
for f in * ; do curl -T $f ftp.example.com && rm $f ; done
&&
- оператор короткого замыкания;она выполнит вторую команду только в том случае, если первая команда вернет значение выхода 0
(что обычно означает «успешно» в возвращаемых значениях процесса - да, немного назад).Вы также можете когда-нибудь найти оператор ||
полезным для выполнения программ в случае сбоя.И, возможно, самое удивительное, вы можете использовать их обе в одной команде, чтобы сделать что-то в случае успеха или неудачи в зависимости от ситуации:
$ true && echo success || echo failure
success
$ false && echo success || echo failure
failure
$