grader
Created Tuesday 07 April 2020
#!/bin/bash
function quiz_to_resultfile () { #
quiz="$1"
key="./THEKEYGOESHERE"
resultfile=$(mktemp)
tempforcount=$(mktemp)
numberofquestions=20
grep -Fxvf "$key" "$quiz" > "$resultfile"
# file thing per number? let's see?
tail -n +2 "$resultfile" > $tempforcount
for i in $(seq 1 $numberofquestions); do
numberchonk="\[q${i}\]"
result=$(grep "$numberchonk" "$tempforcount")
# echo -n "-- RESULT IS #${result}# --"
if [[ $result == "" ]]; then
echo -n ","
else
answer=$(echo $result | cut -d ' ' -f3)
echo -n "${answer},"
fi
done
# FSUID
idline=$(grep fsuid "$resultfile")
fsuid=$(echo $idline | cut -d ' ' -f3 | tr [A-Z] [a-z])
echo -n "${fsuid},"
# code
code=$(echo "$1" | cut -d '-' -f3)
echo -n "${code},"
#number wrong:
wrong=$(echo "$(wc -l < "$resultfile") - 1" | bc)
right=$(echo $numberofquestions - $wrong | bc)
rawgrade=$(echo $right / .${numberofquestions} | bc)
echo -n "${rawgrade},"
echo -n "${wrong},"
# cat "$resultfile" | tr -d '\n'
echo ""
}
function keyline () {
# I got number of quesitons above, no?
keylinekey="$1"
tempy=$(mktemp)
tail -n +4 $keylinekey > $tempy
while read line; do
echo -n "$line , " | tr -d [\[\]]
done < $tempy
echo ""
}
keyline "./THEKEYGOESHERE" | tee ./finalresults.csv
for i in *thing*; do quiz_to_resultfile "$i" | tee -a ./finalresults.csv ; done