Попробуйте приведенный ниже сценарий. Изменения заключаются в том, что Transfer.sh завернут в bash.sh. и причина, по которой он ждет пароль, может быть вызвана тем, что вы ожидаете неправильный шаблон, попробуйте «Пароль» вместо «пароль» и после команды send, ожидайте для шаблона терминала, чтобы scp завершил
#!/bin/bash
while read p; do
echo $p
{
/usr/bin/expect << EOF
spawn scp $p user@192.168.4.151:/home/user/Desktop/
expect "Password"
send "123\r"
expect "*#*"
EOF
}
done <List.txt
read_csv и другие функции tidyr не самые быстрые, но они действительно упрощают работу. Согласно комментариям на ваш вопрос, data.table :: fread - отличный вариант для ускорения импорта данных во фреймы данных. Это ~ 7x быстрее , чем read_csv. Эти фреймы данных затем можно легко изменить на тиблы, используя dplyr :: as_tibble. Вам также может даже не потребоваться изменить кадры данных на тиббл перед обработкой, так как большинство функций обратного хода примут входные данные фрейма данных и выдадут выходной тиббл.