Вот Вам пример для FTP-клиента:
ftp -i -n сервер <<END
user юзер пароль
cd директория
get файл
mget список_файлов
END
В этом варианте можно использовать внутри
$переменная,
${переменная},
`команда`,
$(команда). А используемые спец.символы, если их надо вводить как есть - надо бэкслешить; ну и сам бэкслеш тоже надо бэкслешить.
А если в первой строке написать
ftp -i -n сервер <<\END - то все спец.символы перестают быть специальными, ничего бэкслешить не надо.
А есть более интеллектуальные системы, позволяющие интерактивно дискутировать с запущенной программой.