#!/bin/bash # Tahiry Razafindralambo # v1.0 du 2019.05.30 source ${LIBSH}/libeval.sh a=2 b=3 read -e -p '(evaluation) $ ' -r line # doit contenir la commande expr [ $(echo "$line" | grep -c 'expr') -eq 0 ] step $(vraifaux $?) "Votre commande ne contient pas la commande expr" true # doit contenir un (( [ $(echo "$line" | grep -c "((") -ne 0 ] step $(vraifaux $?) "il y a un operateur de substitution arithmetique" true # doit contenir un i [ $(echo "$line" | grep -c "i") -ne 0 ] step $(vraifaux $?) "il y a la variable i" true # doit contenir un a [ $(echo "$line" | grep -c "a") -ne 0 ] step $(vraifaux $?) "il y a la variable a" true # doit contenir un b [ $(echo "$line" | grep -c "b") -ne 0 ] step $(vraifaux $?) "il y a la variable b" true err="$(mktemp)" fres="$(mktemp)" eval $line 1>$fres 2>$err #if [ $(echo "$line" | grep -c 'expr') -eq 1 ] #then # echo "Non ! Votre commande ne doit pas contenir la commande : expr" # exit 1 #elif [ $(echo "$line" | grep -c "((") -eq 0 ] #then # echo "Non ! Il faut mettre un operateur de substitution arithmetique" # exit 1 #elif [ $(echo "$line" | grep -c "a") -eq 0 ] #then # echo "Non ! Il faut utiliser la variable a" # exit 1 #elif [ $(echo "$line" | grep -c "i") -eq 0 ] #then # echo "Non ! Il faut utiliser la variable i" # exit 1 #elif [ $(echo "$line" | grep -c "b") -eq 0 ] #then # echo "Non ! Il faut utiliser la variable b" # exit 1 #fi echo $i > "$fres" # le fichier d'erreur doit etre vide [ ! -s "$err" ] step $(vraifaux $?) "Votre calcul n'a pas produit une erreur" true # un resultat existe [ -s "$fres" ] step $(vraifaux $?) "un resultat a ete produit" true echo "Le resultat de votre calcul est: $(cat "$fres")" status "$(cat "$fres" "$fres" "$fres")" rm -f "$fres" "$err" #if [ -s "$err" ] #then # echo "Erreur d'execution ou de syntaxe de la commande" # exit 1 #else # echo "Votre calcul n'a pas produit d'erreur !!!" #fi #if [ -s "$fres" ] #then # echo "Le resultat de votre calcul est: $(cat "$fres")" # status "$(cat $fres" $fres" $fres" )" #else # echo "Votre calcul n'a pas produit de resultat" # exit 1 # #fi #rm -f /tmp/err #rm -f /tmp/res