Faire des qcm simplement - retour accueil
git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |
commit 6722e67587a44d20754223865c71cc451158e551 parent 603607d31b96c7fb7a3489d66c4b9f09c562101d Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Thu, 7 Nov 2024 14:51:05 +0100 On peut lire un questionnaire depuis stdin Avec -f - Noter l'astuce avec read _ < /dev/tty C'est parce que si qcm lit depuis un pipe read sera également connecté pour lire depuis le même pipe (même s'il est vide). Alors read n'attend plus l'input de l'utilisateurice depuis le terminal et l'on ne s'arrête pas sur cette ligne. < /dev/tty force read à lire sur la tty, cad depuis le terminal de l'utilisateurice. Diffstat:
M | README | | | 16 | ++++++++++++++++ |
M | qcm.sh | | | 20 | ++++++++++++++++---- |
2 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/README b/README @@ -66,6 +66,19 @@ Lancer un questionnaire pré-rempli se trouvant dans le fichier qcm -r 2 -f ./questionnaire.qcm +Pareil mais en lisant depuis stdin + + cat questionnaire.qcm | qcm -r 2 -f - + +Ecrire les questions à la volée sans les enregistrer au préalable dans +un fichier (nécessite de bien connaître la syntaxe auparavant : + + qcm -f - + +Lancer un questionnaire en local sur un serveur équipé de `qcm` : + + cat questionnaire.qcm | ssh -t user@server qcm -f - + ## Le format du fichier de questionnaire Le fichier de questionnaire est un fichier texte. Chaque question contient des @@ -109,3 +122,6 @@ Etant donné que tous les attributs sont optionnels le fichier suivant : Est valide. S'il est lancé avec la commande `qcm -f ./questionnaire.qcm -n 3` il posera trois questions sans intutilé avec trois options de réponses chacune. + +Si l'on veut créer un questionnaire à la volée et que l'on connaît bien la +syntaxe ci-dessus on peut simplement lancer `qcm -f -` et écrire les questions. diff --git a/qcm.sh b/qcm.sh @@ -10,6 +10,8 @@ usage() <<-. cat nombre de question par défaut : 4 (ABCD) temps entre les rafraichissements par défaut : 1 seconde + Si fichier_de_questions est "-" elles seront lues depuis stdin. + Exemples : qcm @@ -17,6 +19,8 @@ usage() <<-. cat qcm -n 6 qcm -l /var/log/httpd/logs qcm -f ./mon-questionnaire.qcm + cat mon-questionnaire.qcm | qcm -f - + qcm -f - . playout() { @@ -52,7 +56,7 @@ demander() { done & disppid=$! - read a + read _ < /dev/tty kill $disppid $tailpid;rm $tmpd/in } @@ -72,11 +76,19 @@ file="$f" tmpd=$(mktemp -d XXX) id=$(basename "$tmpd") -alias titre:=titre; titre() title="$*" -alias type:=type; type() type="$*" +alias titre:=titre; titre() title="$*" +alias type:=type; type() type="$*" alias options:=options; options() options="$*" trap "rm -rf $tmpd;exit" INT TERM trap "kill 0" EXIT -[ -n "$file" ] && . "$file" || demander +if [ -n "$file" ];then + if [ "$file" = "-" ];then + cat > "$tmpd/questions" + file="$tmpd/questions" + fi + . "$file" +else + demander +fi