Я создаю программу, которая должна сравнивать вход пользователя со строками из файла.Linux Bash Shell Script -p недействительный идентификатор
Вход: ./script Questions.txt Answers.txt
Вот моя программа:
#!/bin/bash
declare -a existing_answ
i=0
j=0
Number_of_correct_answers=0
Number_of_wrong_answers=0
while IFS='' read -r line || [[ -n "$line" ]]
do
existing_answ[$i]="$line"
let "i=i+1"
done < "$2"
while IFS='' read -r line || [[ -n "$line" ]]
do
echo "$line"
while [ -z "$arg1" ]
do
read –p "Your answer: " arg1
done
if [[ ${existing_answ[$j]} == "$arg1" ]]
then
let "Number_of_correct_answers++"
else
let "Number_of_wrong_answers++"
fi
let "j=j+1"
done < "$1"
echo "$Number_of_correct_answers"
echo "$Number_of_wrong_answers"
Что получает бесконечный цикл о том, что -p is not a valid identifier
Того же сценарий для пользовательского ввода работал в моих предыдущих программах, здесь это Безразлично» т. Я пропустил что-то или что с ним не так?
Учитывая «сравнить пользовательский ввод с файлом», почему бы не просто «если grep» $ 2 «$ 1; затем эхо Найди его; иначе эхо «нет»; fi' Удачи – shellter
Похоже, вы используете его с 'sh' вместо' bash'. – tripleee
'read -p' символ перед' p' не является простым тире. Удалите эту строку и повторно введите ее (и никогда не используйте прикольный текстовый процессор или скопируйте/вставьте материал из веб-страниц). Это ENDASH \ u2013. – Mat