Проблема в том, что вы путаете ввод и вывод:
exec 3>&${test[0]}
exec 4>&${test[1]}
input <&3 &>4 &
Вы открываете &3
и &4
только для записи. Но первый может только читать. Чтение из &3
завершается неудачно, потому что вы открыли fd только для записи. Вам нужно
exec 3<&${test[0]}
Если скрипт запускается из crontab
, одним из вариантов будет запуск его из корневогоcrontab
(или системного ), так что sudo
больше не требуется.