Использование here-docs в командной оболочке для встраивания кода для другого языка обычно лучше, чем использование кавычек в аду, а совместное использование переменных в среде проще и безопаснее, чем расширение параметров:
export account passwd
while IFS= read -r server; do
export prompt="[$acc@$server ~]$ "
export host="$server.$suffix"
expect << 'END_EXPECT'
spawn ssh -o StrictHostKeyChecking=no $env(account)@$env(host)
expect "Password: "
send "$env(passwd)\r"
expect $env(prompt)
send "logout\r"
expect eof
END_EXPECT
done < "$fic_serv"
Как показано, мне нравится делать отступ в heredoc, чтобы сделать его более очевидным.
И в зависимости от сообщения об ошибке или запроса на вход в систему может быть больше логики, чтобы указать, что имя учетной записи и / или пароль неверны.