Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как написать Shell-script, написать скрипт который делает ввод 
:(
    Опции темы
alex35
Дата 27.10.2006, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 2.9.2006

Репутация: нет
Всего: нет



Пожалуйста, 
подскажите как написать следующий shell-script 
У меня есть программа prog.
во время выполнения она задает пользователю вопрос, в ответ на который пользователь должен просто 
нажать Enter.
Мне нужно написать коротенький скрипт который бы запускал эту программу 20 раз в цикле, 
давал ввод от пользователя.
Т.е. чтоб скрипт не останавливался каждый раз когда прога задает вопрос раз
,а сам скармливал ввод в программу.

Заранее спасибо
PM MAIL   Вверх
bilbobagginz
Дата 27.10.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



если программа интерактивная (т.е. нет возможности заставить её напр.принимать ввод из командной строки, не останавливаясь на тупые вопросы, то для запуска в режиме скрипта можно использовать программу expect, или есть на PERL несколько модулей работы в режиме, похожем на "экспект"
создаётся специальный скрипт на языке этого expect, который определяет после каких слов на выводе программы нужно ввести ей "пользовательский" ввод.
проблема в том, что expect - неудобная в пользовании - для использовании в скрипте - нужна и она, и если это часть другого скрипта - shell-script, который будет обёрткой для expect-скрипта.
некрасиво, поэтому, Может быть есть смысл почитать как работает Expect модуль на перле, мне как-то приходилось на нём чего-то делать, дока довольно понятно написана. задача была решена.
И писать этот весь скрипт не на шелле, а на перле... Если имеется такая возможность.

Короче можно потом запускать скрипт на 1 языке. а не 2 скрипта на разных языках: 
Если переносишь этот скрипт на н-ное кол-во серверов - не на каждом сервере есть возможность использовать expect, а perl обычно присутствует везде, вот и распространяй свой скрипт, с нужной версией Expect- модуля. Возможно есть такая хрень и для питона.

Удачи.
С.У.В.


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
alex35
Дата 27.10.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 2.9.2006

Репутация: нет
Всего: нет



внутри программы код:
cout<<"\n Enter something: ";
getline (cin,mystr);

может как то перенаправить cin, чтобы он из командной строки читал, а потом вставить это в мой скрипт?
Только не знаю, как это сделать...
PM MAIL   Вверх
bilbobagginz
Дата 27.10.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



можно записать это в файл, а файлы можно перенаправлять:
program < file1 > file2

файл file1 будет скормлен программе как стандартный ввод.
а вывод будет перенаправлен в file2.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
MAKCim
Дата 27.10.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 21
Всего: 207



Цитата

У меня есть программа prog.
во время выполнения она задает пользователю вопрос, в ответ на который пользователь должен просто 
нажать Enter.
Мне нужно написать коротенький скрипт который бы запускал эту программу 20 раз в цикле, 
давал ввод от пользователя.
Т.е. чтоб скрипт не останавливался каждый раз когда прога задает вопрос раз
,а сам скармливал ввод в программу.

Код

#!/bin/bash

COUNT=0
PROGRAM=$1
while [ $COUNT -lt 20 ]
do
# $PROGRAM - твоя программа
    $PROGRAM <    <куда перенаправляем ввод программы>
done



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1303 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.