Есть ли пакетный эквивалент команды Linux "sdiff -s"? - PullRequest
0 голосов
/ 08 мая 2019

Класс информатики, который я беру, использует bash-скрипт для оценки наших заданий.Однако, поскольку многие студенты используют Windows, я пытаюсь написать эквивалентный командный файл, который они могут запустить на своих устройствах для оценки своей лаборатории.

Действительно важной частью сценария bash является "sdiff -s key_$ f out_ $ f >> details.txt "

Сравнивает файл ключа и выходной файл и печатает различия в файле сведений.

Я не использовал bash раньше и егоПрошло много времени с тех пор, как я использовал пакетные файлы, поэтому я довольно потерян.

Скрипт Bash:

echo ""
echo "Running Diff"
echo "--------"
rm turnin.txt
rm details.txt
for f in file*.txt;
do
    f=${f#tests/}
    cat out_$f >> turnin.txt
    echo "out_$f">> details.txt
    sdiff -s key_$f out_$f >> details.txt
    if [ ${PIPESTATUS[0]} -eq 0 ];
    then
        echo "key_$f and out_$f are identical"
    else
        echo "key_$f and out_$f differ :: check details.txt for details"
    fi
done
echo "--------"

Пример файла details.txt, когда файлы совпадают:

out_file1.txt
out_file2.txt
out_file3.txt
out_file4.txt
out_file5.txt

Пример файла details.txt, когда некоторые строки файлов различаются:

out_file1.txt
isBalanced { ( [ ] } ) False                      | isBalanced { ( [ ] } ) True
isBalanced { { ( ) [ { } ] ( [ ] ) } } True       | isBalanced { { ( ) [ { } ] ( [ ] ) } } False
out_file2.txt
out_file3.txt
out_file4.txt
  40 2 4 + 2 2 + - * 4 5 / 6 / -                  |   402 4 + 2 2 + - * 4 5 / 6 / -
  48 36 7 % + 2 -                                 |   48 36 7 2 -
out_file5.txt

Любой совет приветствуется!

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