Не вызывать внешний процесс для проверки, а использовать внутреннюю функцию оболочки test
if test -d "$i"; then # check that directory exists
Между тестом и вызовом rm возможно, что другие процессы уже стерли каталог, поэтому rm выйдет из строя. Вы можете использовать переключатель-f или перенаправить ошибки
/bin/rm "$i/*" 2> /dev/null # remove the files
SSH может работать как сжатый протокол, и, судя по вашим результатам, он включен как таковой по умолчанию в вашем дистрибутиве или конфигурации (или вы используетеssh -C
). Таким образом, ваш поток нулей хорошо сжимается во что-то гораздо более компактное --по вашим показаниям, с коэффициентом сжатия около 300 :, конечный результат составляет около 0,3% от исходного размера. По этой причине это не очень хороший выбор для тестирования скорости сети, поскольку может потребоваться небольшая пропускная способность сети, чтобы получить отличный результат на приемнике.
Вы можете отключить сжатие по запросу с помощью -o Compression=no
в командной строке или навсегда для соединения, указав Compression no
в конфигурации вашего SSH-клиента.
Другим вариантом является использование чего-то более простого, такого как netcat
, который не реализует сжатие, аутентификацию и т.п., хотя по этой причине я бы не рекомендовал использовать его для передачи файлов в реальном -мире.