Wygląda, że coś nie tak jest w linii wywołania pliku albo z wywoływanym plikiem.
Problemem jest chyba wykorzystanie polecenia shella (exec) w ramach skryptu expect. Polecenie shella (lub wywołanie skryptu shella) jest najwyraźniej niezrozumiałe dla expecta. Poza tym polecenie exec powoduje wywołanie skryptu (gdyby jakimś cudem się to udało) w bieżącej powłoce, w związku z czym pętla "while" nie będzie się wykonywać, bo zostanie "zastąpiona" (przerwana, zakończona) poleceniem "exec". Myślę, że rozwiązaniem jest ostatni wpis (a właściwie propozycja struktury programu) na tej stronie (chociaż oczywiście warto przejrzeć całość):
http://stackoverflow.com/questions/4780893/use-expect-in-bash-script-to-provide-password-to-ssh-command
W tym kontekście pętlę trzeba by było nałożyć oczywiście w ramach shella (basha), a nie expecta (czyli wowołanie expecta wraz z poleceniem spawn byłoby wielokrotne w ramach pętli shella)