[Ответить в тред] Ответить в тред

03/04/16 - Набор в модераторы 03.04 по 8.04
26/03/16 - Конкурс: Помоги гомункулу обрести семью!
15/10/15 - Набор в модераторы 15.10 по 17.10



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 17 | 2 | 11
Назад Вниз Каталог Обновить

BASH / потоки ввода-вывода, паралельное выполнение Аноним 04/03/16 Птн 01:29:22  675160  
14570441622860.gif (1Кб, 300x40)
Есть одна программа на java (назовем её app.jar) и есть скрипт, в котором я пытаюсь заставить её работать так, как я хочу.

Программа app.jar производит некоторые действия, а затем не завершает работу. Для корректного результата с клавиатуры ей надо ввести строку "exit" и нажать enter.

Определять из скрипта, то что программа закончила некоторые действия и ждет ввода я научился, анализируя размер лога программы в цикле.

Осталось научиться передать exit [Enter] программе.

Т.е. грубо говоря скрипт сейчас такой

java -jar app.exe & #амперсанд чтобы выполнялся следующий код
waitForFinishApp; #функция, которая в цикле с некоторой задержкой проверяет размер лог файла
echo "exit" > stdin #куда надо выводить exit? так не работает

Ах да, при запуске с амперсандом в конце, app.jar ругается страшными явовскими логами в начале, но вроде работает. Не понимаю, что ей не нравится.
Аноним # OP  04/03/16 Птн 01:38:25  675164
./bump
Аноним 04/03/16 Птн 01:46:28  675171
>>675160 (OP)
Она не ругается, просто она в стдаут пишет всякую хуйню, т.к. ты не перенаправил её выыод в дев/нулл. А про экзит хз
Аноним 04/03/16 Птн 01:51:16  675181
>>675171
>Она не ругается, просто она в стдаут пишет всякую хуйню

Но когда запускаю без амперсанда она не пишет эту хуйню...
Аноним 04/03/16 Птн 02:07:00  675203
exit_writer(){
waitForFinishApp
echo 'exit'
}

exit_writer | java -jar app.exe
Аноним 04/03/16 Птн 02:10:47  675205
>>675203
Ух ты! Сейчас попробую
Аноним 04/03/16 Птн 02:35:34  675233
>>675203
То что нужно! Спасибо, анон!
Аноним 10/03/16 Чтв 19:20:43  682873
Раз есть тема про баш, то спрошу здесь. Есть две программы, решающие одну задачу. Одна долго и в лоб, другая дохуя умная и быстрая. Нужно проверить корректность второй. Генератор тестов также есть. Собсна помогите написать скрипт, автоматизирующий проверку умного решения. Смотрел всякие сайты, гайды по башу. Нихуя не понятно, переменные блять не имеют типов, неочевидный синтаксис и вообще я быдло
Аноним 10/03/16 Чтв 19:24:50  682884
>>682873
а еще вывести тест, на котором решение валится, вот
Аноним 11/03/16 Птн 06:20:55  683424
бамп
Аноним 11/03/16 Птн 11:23:03  683507
>>682873
mytest(){
./proga1 < $1 > outfile1
./proga2 < $1 > outfile2
diff outfile1 outfile2 || {
echo "Test $2: Pizdariki"
exit 1
}
}

set -e
mytest inputfile1 "1: check huita"
mytest inputfile2 "2: check yoba"
mytest inputfile3 "3: check zhopa"
# etc ...
Аноним 11/03/16 Птн 23:21:49  684508
>>683507
Спасибо, няш
Аноним 27/03/16 Вск 02:34:25  699599
14590352651080.jpg (6Кб, 300x148)
bash скрипт в цикле много раз выполняет некоторое приложение, как-то так:

for $file in $filelist
do
prilozhenie $file
done

Если во время выполнения скрипта нажать ctrl+c, то завершится экземпляр приложения, выполняемый в данный момент и запустится следующий экземпляр.

Как сделать так, чтобы это сочетание клавиш сразу завершало весь скрипт?
Аноним 27/03/16 Вск 06:31:11  699614
>>699599
http://serverfault.com/questions/105386/bash-loop-how-to-stop-the-loop-when-i-press-control-c-inside-a-command
Аноним 27/03/16 Вск 20:46:32  700512
>>699614
спасибо
Аноним 28/03/16 Пнд 01:04:07  700698
>>675203
>exit_writer(){
> waitForFinishApp
> echo 'exit'
>}

>exit_writer | java -jar app.exe


Блин. А красиво.
Аноним 16/04/16 Суб 20:33:42  718682
Анон, сделал вот такой вот скрипт: http://pastebin.com/4L28rKPB

Суть в том, что при первом запуске подготавливается приложение, а при следующих запусках скрипта он переносит фокус на уже открытое приложение. Это все работает, но есть одно но: когда открыт sublime, то скрипт почему-то реагирует на него, хотя не должен, от слова совсем. Короче, говоря есть ложные срабатывания.

В чем проблема? Неподсвеченный код ниже

> #!/bin/sh
> SERVICE='konqueror'
> MYPATH='/usr/bin/konqueror'

> if ps ax | grep -v grep | grep -w $MYPATH > /dev/null
> then
> nohup /usr/bin/wmctrl -a $SERVICE &
> else
> nohup $MYPATH --profile Profile &
> sleep 1
> nohup wmctrl -r $SERVICE -t 4 &
> fi

Аноним 16/04/16 Суб 20:51:18  718704
>>718682
Сам разобрался. Оказалось из-за того что название скрипта было konqueror, а сублайм назначал свой title по имени редактируемого файла и происходила коллизия :0




[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 17 | 2 | 11
Назад Вверх Каталог Обновить

Топ тредов