Пользовательский ввод сравнения с .txt - PullRequest
0 голосов
/ 11 февраля 2020

Написание кода, который проверяет пользователя с вопросами из файла, сравнивает user_input с ответами в текстовом файле. Кажется, я не могу понять, почему он не сравнивает ответы и не увеличивает переменную на 1 для каждого правильного ответа. Может быть потому, что скрипт не читает файл answer.txt?

#!/bin/bash
clear
questions=$1
answers=$2
correct=0
wrong=0

while read line  #IFS = internal field Seperator
do
        echo
        echo $line
        echo
        echo "Your Answer:\c"
        read user_answer </dev/tty #reads answer from terminal
        if [ "$user_answer = $answers" ]; then
           correct =$((correct + 1))
        fi
done < $questions

echo
echo "Correct Answers: $correct "
echo "Wrong Answers: $wrong" ```

1 Ответ

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

Предположим, что файлы вопросов и ответов имеют одинаковое количество строк. while l oop будет читать одну строку из каждого файла на каждой итерации, используя отдельные файловые дескрипторы для каждого файла. Стандартный ввод останется один, чтобы пользователь мог ввести ответ.

clear
questions=$1
answers=$2
correct=0
wrong=0

while IFS= read -r q <&3  # Read from descriptor 3
      IFS= read -r a <&4  # Read from descriptor 4
do
        echo
        echo "$q"
        echo
        echo "Your Answer:\c"
        IFS= read -r user_answer
        if [ "$user_answer" = "$a" ]; then
           echo "Correct!"
           correct=$((correct + 1))
        else
           echo "Wrong!"
           wrong=$((wrong + 1))
        fi
done 3< "$questions" 4< "$answers"   # Use 3 for questions, 4 for answers  
echo
echo "Correct Answers: $correct "
echo "Wrong Answers: $wrong"
...