Я предполагаю это foo.sh
правильно возвраты, ненулевые на ошибке. Затем необходимо сделать временный файл, и только перезаписать вывод на успехе.
tmp=$$(mktemp) && ./foo.sh input.txt > $$tmp && mv $$tmp $@ || rm -f $$tmp && false
Если все, в чем Вы нуждаетесь, должно принять новые неизвестные хосты, попробуйте это:
ssh -o StrictHostKeyChecking=no
Если также необходимо принять измененные ключи хоста, можно обмануть SSH в использование пустого файла для хранения, это - локальный набор известных ключей хоста, то, принимая новые неизвестные. Обратите внимание, что это - Плохой Idea™:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no