Исправление CrX, (текущая версия) :
Сам скрипт, так чтобы в keys.txt были просто строки правильных ответов я бы написал как-то так:
#!/bin/sh
# Показать картинку на секунду
show_pic() {
fim "$1.jpg" &
jpg_pid=$!
sleep 1
kill $jpg_pid
}
sudo apt-get install fim
[ -z $(which fim) ] && exit
echo "Введите названия сигналов"
sleep 1
# счётчик очков, в начале 0
correct=0
for i in $(seq 9); do
# показываем картинку
show_pic "$i"
# берём правильный ответ из файла, с i-той строки, отрезаем ненужные символы перевода строки
right_answer="$(sed -n ${i}p keys.txt | tr -d '\n' | tr -d '\r')"
# запрашиваем ответ юзера
read answer
# если совпадает, начисляем очко
[ "$answer" = "$right_answer" ] && correct=$(($correct+1))
done
echo "Вы дали $correct правильных ответов"
А вот для парсинга квази-регэкспов придётся написать ещё с десяток строк. Если заменить на настоящие регэкспы, можно будет обойтись grep или sed.
P.S. | tr -d '\n' | tr -d '\r'
добавлено исключительно из-за того, что у тебя keys.txt почему-то в \r\n (DOS) формате. Если перевести в человеческий (dos2unix keys.txt
), то эта часть не требуется.
Исправление CrX, :
Сам скрипт, так чтобы в keys.txt были просто строки правильных ответов я бы написал как-то так:
#!/bin/sh
# Показать картинку на секунду
show_pic() {
fim "$1.jpg" &
jpg_pid=$!
sleep 1
kill $jpg_pid
}
sudo apt-get install fim
[ -z $(which fim) ] && exit
echo "Введите названия сигналов"
sleep 1
# счётчик очков, в начале 0
correct=0
for i in $(seq 9); do
# показываем картинку
show_pic "$i"
# берём правильный ответ из файла, с i-той строки, отрезаем ненужные символы перевода строки
right_answer="$(sed -n ${i}p keys.txt | tr -d '\n' | tr -d '\r')"
# запрашиваем ответ юзера
read answer
# если совпадает, начисляем очко
[ "$answer" = "$right_answer" ] && correct=$(($correct+1))
done
echo "Вы дали $correct правильных ответов"
А вот для парсинга квази-регэкспов придётся написать ещё с десяток строк. Если заменить на настоящие регэкспы, можно будет обойтись grep или sed.
Исправление CrX, :
Сам скрипт, так чтобы в keys.txt были просто строки правильных ответов я бы написал как-то так:
#!/bin/sh
# Показать картинку на секунду
show_pic() {
fim "$1.jpg" &
jpg_pid=$!
sleep 1
kill $jpg_pid
}
sudo apt-get install fim
[ -z $(which fim) ] && exit
echo "Введите названия сигналов"
sleep 1
# счётчик очков, в начале 0
correct=0
for i in $(seq 9); do
# показываем картинку
show_pic "$i"
# берём правильный ответ из файла, с i-той строки, отрезаем ненужные символы перевода строки
right_answer="$(sed -n ${i}p keys.txt | tr -d '\n' | tr -d '\r')"
# запрашиваем ответ юзера
read answer
# если совпадает, начисляем очко
[ "$answer" = "$right_answer" ] && correct=$(($correct+1))
done
echo "Вы дали $correct правильных ответов"
Исправление CrX, :
Сам скрипт, так чтобы в keys.txt были просто строки правильных ответов я бы написал как-то так:
#!/bin/sh
# Показать картинку на секунду
show_pic() {
fim "$1.jpg" &
jpg_pid=$!
sleep 1
kill $jpg_pid
}
sudo apt-get install fim
[ -z $(which fim) ] && exit
echo "Введите названия сигналов"
sleep 1
# счётчик очков, в начале 0
correct=0
for i in $(seq 9); do
# показываем картинку
show_pic "$i"
# берём правильный ответ из файла, с i-той строки, отрезаем ненужные символы перевода строки
right_answer="$(sed -n ${i}p keys.txt | tr -d '\n' | tr -d '\r')"
# запрашиваем ответ юзера
read answer
# если совпадает, начисляем очко
[ "$answer" = "$right_answer" ] && correct=$(($correct+1))
done
echo "Вы дали $correct правильных ответов"
Исправление CrX, :
Сам скрипт, так чтобы в keys.txt были просто строки правильных ответов я бы написал как-то так:
#!/bin/sh
show_pic() {
fim "$1.jpg" &
jpg_pid=$!
sleep 1
kill $jpg_pid
}
sudo apt-get install fim
[ -z $(which fim) ] && exit
echo "Введите названия сигналов"
sleep 1
correct=0
for i in $(seq 9); do
show_pic "$i"
right_answer="$(sed -n ${i}p keys.txt | tr -d '\n' | tr -d '\r')"
read answer
[ "$answer" = "$right_answer" ] && correct=$(($correct+1))
done
echo "Вы дали $correct правильных ответов"
Исходная версия CrX, :
Сам скрипт, так чтобы в keys.txt были просто строки правильных ответов я бы написал как-то так:
#!/bin/sh
show_pic() {
fim "$1.jpg" &
jpg_pid=$!
sleep 1
kill $jpg_pid
}
sudo apt-get install fim
[ -z $(which fim) ] && exit
echo "Введите названия сигналов"
sleep 1
correct=0
for i in $(seq 9); do
show_pic "$i"
right_answer="$(sed -n ${i}p keys.txt | tr -d '\n' | tr -d '\r')"
read answer
[ "$answer" = "$right_answer" ] && correct=$(($correct+1))
done
echo "Вы дали $correct правильных ответов"