Сценарий оболочки для проверки пакетов данных - PullRequest
0 голосов
/ 15 сентября 2018

Мне нужно создать сценарий оболочки, чтобы проверить мои алгоритмы с множеством данных (тестирует пакеты, сохраненные в файлах .in, каждый пакет содержит папку с файлом .in, а другой - с файлом .out, где должен быть правильный результат) ИногдаЭто около 1000 файлов в одном пакете, поэтому нет смысла делать это вручную.Мне нужен какой-то цикл, который открывает этот файл .in, затем перенаправляет ввод моей программы на c ++, а также перенаправляет вывод этой программы (сохраняет результат в файлы .out). Но дело в том, что я не могу получить этот язык так быстро, как мне нужно,И я хотел бы, чтобы этот скрипт сравнивал результаты моего алгоритма с файлами .out из пакетов

for f in ExternalIn/*.in; do//part of code which opens process with my algorithm and compare its .out file to .out file from package

1 Ответ

0 голосов
/ 15 сентября 2018

Пропуск проверок на отсутствие файлов, безопасность пробелов и т. Д., Вам, вероятно, понадобится что-то вроде:

for f in ExternalIn/*.in; do
    # diff the result of my_cpp_app eating file.in with file.out
    # and store the comparison result in file.diff
    diff ${f/.in/.out} <(my_cpp_app <$f 2>/dev/null) > ${f/.in/.diff}
done

Хотя я, вероятно, сделал бы это с find / xargs конвейером, который не только безопаснее, но и допускает параллельное выполнение.

Или даже напишите Makefile для этого и используйте make, который, в конце концов, является инструментом именно для такой работы.

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