Форум русскоязычного сообщества Ubuntu


Автор Тема: Shell script  (Прочитано 894 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн haylie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Shell script
« : 05 Февраля 2011, 00:00:03 »
Привет
помогите ,надо сделать bash script  который бы проверял тесты студентов
3 файла "задание,ответы,ответы студентов
формат файла задание

Вопрос Н.(номер) 1
вопрос (например сколько у человека пальцов)
A 1
B 5
C 55
D 20

Правильный ответ D
и так дале

------------------------------
формат файла Ответы
Номер  вопроса и ответ
например

1. D
2. C D

-----------------------------------
формат файла ответы студентов

Имя Фамилия Номер вопроса и ответ



с помошю (cat sed grep  head tail sort etc.)

надеюсь что понятно всё ,и что ктота поможет
извеняюсь за граматику я не руский ;) из Чехий


Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Shell script
« Ответ #1 : 05 Февраля 2011, 00:13:13 »
довольно просто сделать
только если примеры будут по понятней  ;)

типа:
формат файла Ответы
1 D
2 F
3 A

формат файла ответы студентов
Имя Фамилия
"Номер вопроса." "ответ"
"Номер вопроса." "ответ"
"Номер вопроса." "ответ"
"Номер вопроса." "ответ"
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн haylie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Shell script
« Ответ #2 : 05 Февраля 2011, 00:16:08 »
да да такой формат

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Shell script
« Ответ #3 : 05 Февраля 2011, 00:20:36 »
могу написать за час где то

1) файлы сами как проименованы? типа "файл_ответов_1"  или как?
2) ответы по порядку?
3) Что должно выводится? есть вариант ответов, и куча файлов ответов студентов. Балы должны считаться или как? Записываться куда то?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн haylie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Shell script
« Ответ #4 : 05 Февраля 2011, 00:27:04 »
1) файлы сами как проименованы? типа "файл_ответов_1"  или как?
файлы как поименироват всёравно потомучто я потом на ческий переведу надеюсь :)
2) ответы по порядку?
ответы по порядку недолжны быть
3) Что должно выводится? есть вариант ответов, и куча файлов ответов студентов. Балы должны считаться или как? Записываться куда то?
выводитсия должно Имя фамилия студента + скока сделал ошибок 

если ответ например А и Б а в ответе студента тока А так 1 ошибка и так дал


извените что ненаписал всё что вам надо

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Shell script
« Ответ #5 : 05 Февраля 2011, 00:31:14 »
2) ответы по порядку?
ответы по порядку недолжны быть
то есть ученик может отвечать в разброс?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн haylie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Shell script
« Ответ #6 : 05 Февраля 2011, 00:32:58 »
2) ответы по порядку?
ответы по порядку недолжны быть
то есть ученик может отвечать в разброс?
да может ;)

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Shell script
« Ответ #7 : 05 Февраля 2011, 01:11:17 »
Как то так.
Все замечания сюда.  ;)

mark_calc делаем исполняемым, в нем прописываем путь к файлу ответов. В моем случае:
answer_file="/media/data/Ubuntus/my_scripts/answer_file"Запускаем так:
./mark_calc "и сбрасываем все файлы ответов студентов."
#у меня выглядит так
./mark_calc '/media/data/Ubuntus/my_scripts/student_answer_file_1' '/media/data/Ubuntus/my_scripts/student_answer_file_2' '/media/data/Ubuntus/my_scripts/student_answer_file_3' '/media/data/Ubuntus/my_scripts/student_answer_file_4'

Вывод будет примерно таким:
(Нажмите, чтобы показать/скрыть)

Такой файл ответов тоже правильно обработало:
(Нажмите, чтобы показать/скрыть)
 ;D
« Последнее редактирование: 05 Февраля 2011, 01:14:47 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн haylie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Shell script
« Ответ #8 : 05 Февраля 2011, 01:18:56 »
спосибо большое выручил :)))
правда тепер розабратся в скрипте ;)

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Shell script
« Ответ #9 : 05 Февраля 2011, 01:20:33 »
Да не за что.
Все баги/ошибки сюда же, все вариант просчитать не могу ;) , мало ли что...

Пока тока один "баг": имя студента должно быть именно в первой строчке, но это не критично и легко исправить.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн haylie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Shell script
« Ответ #10 : 05 Февраля 2011, 01:21:30 »
ясно если что напишу
спосибо большое :)

Пользователь решил продолжить мысль 05 Февраля 2011, 01:33:43:
могу ешо если не трудно приписать коментарий к строкам что делаю ато в школе несовсем так делаем :)
« Последнее редактирование: 05 Февраля 2011, 01:33:43 от haylie »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Shell script
« Ответ #11 : 05 Февраля 2011, 02:00:51 »
(Нажмите, чтобы показать/скрыть)
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Shell script
« Ответ #12 : 05 Февраля 2011, 11:12:17 »
Я писал скрипт для составления тестов. Имелся файл с тестами, в котором вопросы были разделены двойным "\n" и файл с ответами. Нужно было их совместить и привести к нежному виду. Возможно что-то вам пригодится в решении вашей задачи:
#!/bin/bash
#Mon Nov  1 22:27:42 MSK 2010

##убираем строку с предложением выбора
cat ./questions | sed '/^$/N;/Выберите .* вариантов ответа:/d'>temp

rm ./questions_temp_folder/*

#деление на вопросы. В имени вопроса его номер
cat temp | while read
do
if [[ $(grep "Задание # " <<< "$REPLY") ]]
then
T=$(awk '{print $3}' <<< "$REPLY")
fi
echo "$REPLY" >>./questions_temp_folder/"$T"
done

#Прогоняем файлы с вопросами и удаляем лишнее
for i in `ls ./questions_temp_folder`
do
cat ./questions_temp_folder/$i | sed "2d" >./questions_temp_folder/$i #Вторая всегда одинаковая и содержит "Вопрос:"
cat ./questions_temp_folder/$i | sed "1d" >./questions_temp_folder/$i #Первая нам не нужна, так как номер вопроса содержится в имени
cat ./questions_temp_folder/$i | sed '/Вопрос: / s//\n# /g' >./questions_temp_folder/$i #Вставляем перенос строкии решетку (#) вместо слова "вопрос"
done


#Подстановка правильных ответов
for i in `ls ./questions_temp_folder`
do
answer=`cat ./answers | sed -ne "$i"p | awk -F ":" '{print $2}' |   sed '/;/ s///g'`

for j in $answer
do
cat ./questions_temp_folder/$i | sed "/$j)/ s//+/g" >./questions_temp_folder/$i
done

done


#Доведение вовпроса до ума: расстановка минусов и закоментирование первой строки:

for i in `ls ./questions_temp_folder`
do
cat ./questions_temp_folder/$i | awk '{if ($1!="+" && $1!="#" && $1!="№") $1="-"; print}' | awk '{if ($1=="№") $1="№№"; print}' | sed '$d' >./questions_temp_folder/$i
done
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.