Bash скрипт для постоянной проверки на разницу - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть 2 двоичных файла c ++ и файл класса java, готовый для интерпретации.

debug_script.sh //my script file
gen
exe
prob.class

В debug_script моей первой целью является выполнение gen. Это печатает выходную строку в stdout, давайте назовем ее EXPR. Строка затем переходит в exe и prob.class, оба читаются как stdin, разделенные символом новой строки. В псевдокоде / broken- bash это будет выглядеть так:

./exe < EXPR
java -cp . prob.class < EXPR

Оба exe и prob.class генерируют целочисленный стандартный вывод, я хочу сравнить два целых числа, чтобы увидеть, равны ли они оба бесконечное время l oop (повторите весь процесс генерации EXPR и подачи его в 2 программы).

l oop должен разбить и сохранить EXPR в файле или просто отобразить его, если два возвращенных целых числа из gen и prob.class различны.

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Вы можете сохранить вывод в переменной и передать его другим программам, например:

#!/bin/bash

while : ; do

    gen_out=$(gen)
    intone=$(./exe <<<"$gen_out")
    inttwo=$(java -cp . prob.class <<<"$gen_out")

    if [[ $intone != $inttwo ]]; then
        echo "gen output when exe and prob.class differ: $gen_out"
        echo "exe output: $intone"
        echo "prob.class output: $inttwo"
        break
    fi

done

<<< называется здесь строкой. См. bash руководство .

0 голосов
/ 11 апреля 2020

Лично я бы создал бесконечное l oop: while true; do {code}; done Так что в вашем случае:

    #!/bin/bash
    while true; do

    EXPR=$(./gen)
    val1=$(./exe < $EXPR)
    val2=$(java -cp . prob.class < $EXPR)
    if [ $val1 = $val2 ];then
    exit
    fi
    echo $EXPR
    sleep 1

    done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...