Created
May 19, 2016 14:18
-
-
Save TwiN/88e940df9fe16d39356e6afc1367f66c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#NOTE: | |
# | |
# Une connection internet est necessaire pour le bon | |
# fonctionnement du script, mais meme sil n y a pas | |
# de connection internet, vous allez pouvoir entrer | |
# la temperature manuellement. | |
# | |
#TEST SI LES PACKAGES NECESSAIRES SONT INSTALLEE | |
if [ $(which bc) >/dev/null ]; then | |
# bc est necessaire pour faire des calculs avec decimal | |
echo "Le package bc nest pas installer.." | |
echo "> Installation du package bc en cours.." | |
#install silencieusement.. | |
apt-get -qq install bc | |
echo "> Installation du package terminee!" | |
fi | |
#VARIABLES (p* -> prix) | |
nomMenu=("Poutine" "Hotdog" "Hamburger" "Soda") | |
pBase=(5.00 10.00 15.00 1.50 5.00 8.00 10.00 2.00) | |
pFinal=(5.00 10.00 15.00 1.50 5.00 8.00 10.00 2.00) | |
pModifier=1.00 | |
finalPrice=0.00 | |
#FONCTIONS | |
getTemperature() { | |
rawSource=$(wget -qO - --no-check-certificate https://weather.gc.ca/city/pages/qc-147_metric_e.html) | |
if [ $(echo $rawSource | wc -w) -eq 0 ]; then | |
echo "################################" | |
echo "Votre internet est hors-ligne, il est donc impossible" | |
echo "de determiner la temperature." | |
echo "Voulez vous:" | |
echo " > (1) entrez la temperature manuellement" | |
echo " > (2) imprimer les prix reguliers" | |
echo "################################" | |
read choix | |
clear | |
if [ $choix = "1" ]; then | |
echo "Entrez la temperature: " | |
read temperature | |
elif [ $choix = "2" ]; then | |
echo " (!) Pour imprimez les prix reguliers, la temperature a ete " | |
echo " regler a 9 degres puisque cette temperature ne donne pas" | |
echo " de reduction de prix." | |
echo | |
temperature=9 | |
else | |
echo "Option invalide, le programme va se fermer dans 5 secondes." | |
sleep 5 | |
exit 1 | |
fi | |
return | |
else | |
echo "> Connection internet etablie..." | |
fi | |
rawTemp=$(grep -P -o 'span class="wxo-metric-hide">.*?°' <<< $rawSource) | |
rawTemp=$(grep -o . <<< $rawTemp) | |
rawTemp=$(awk -F">" '{print $2}' <<< $rawTemp) | |
temperature=$(awk -F" " '{print $1 $2}' <<< $rawTemp) | |
} | |
getPrecipitation() { | |
rawSource2=$(wget -qO - --no-check-certificate https://meteo.gc.ca/city/pages/qc-133_metric_f.html) | |
rawRain=$(grep -P -o 'dd class="mrgn-bttm-0">[0-9]*?%' <<< $rawSource2) | |
rawRain=$(grep -o . <<< $rawRain) | |
rawRain=$(tail -c 6 <<< $rawRain) | |
rawRain=$(awk -F"%" '{print $1}' <<< $rawRain) | |
precipitation=$(awk -F" " '{print $1 $2}' <<< $rawRain) | |
} | |
updatePrices() { | |
count=0 | |
for i in "${pFinal[@]}" | |
do | |
pFinal[$count]=$(expr ${pBase[$count]}*$pModifier | bc) | |
(( count++ )) | |
done | |
} | |
getPriceList() { | |
updatePrices | |
echo "=================================================" | |
echo " NOM FORMAT PRIX " | |
echo "=================================================" | |
echo "(1)${nomMenu[0]} petit \$${pFinal[0]}" | |
echo " moyen \$${pFinal[1]}" | |
echo " gros \$${pFinal[2]}" | |
echo | |
echo "(2)${nomMenu[1]} \$${pFinal[3]}" | |
echo | |
echo "(3)${nomMenu[2]} junior \$${pFinal[4]}" | |
echo " normal \$${pFinal[5]}" | |
echo " king \$${pFinal[6]}" | |
echo | |
echo "(4)${nomMenu[3]} \$${pFinal[7]}" | |
echo "=================================================" | |
} | |
#EXECUTION DES FONCTIONS | |
clear | |
getTemperature | |
getPrecipitation | |
#CODE | |
echo "DATE: "$(date +"%Y-%m-%d") | |
echo "Il fait $temperature en se moment." | |
if [ $temperature -le 10 ]; then | |
echo "Puisqu'il fait quand meme froid, les prix ne changent pas." | |
pModifier=1.00 | |
elif [ $temperature -le 20 ]; then | |
echo "Puisque la temperature est acceptable, il y a 10% de rabais!" | |
pModifier=0.90 | |
elif [ $temperature -le 99 ]; then | |
echo "Puisque la temperature est tres bonne, il y a 30% de rabais!" | |
pModifier=0.70 | |
else | |
echo "Puisque le script est brisee, il y a 99% de rabais!" | |
pModifier=0.01 | |
fi | |
echo "La probabilite d'averse est de $precipitation%." | |
if [[ $precipitation -le 20 ]]; then | |
echo "Il y a donc un extra 1% de rabais!" | |
pModifier=$(bc <<< "$pModifier-0.01") | |
elif [[ $precipitation -le 40 ]]; then | |
echo "Il y a donc un extra 10% de rabais pour votre courage!" | |
pModifier=$(bc <<< "$pModifier-0.10") | |
elif [[ $precipitation -le 100 ]]; then | |
echo "Il y a donc un extra 15% de rabais pour votre grand courage!" | |
pModifier=$(bc <<< "$pModifier-0.15") | |
fi | |
getPriceList | |
while [ 1 ]; | |
do | |
grandeur=" " | |
echo "> Que voulez-vous commandez? (q si vous avez fini)" | |
read commande | |
index=0 | |
if [ "$commande" = "1" ]; then | |
index=0 | |
while [ 1 ]; | |
do | |
echo "> Format (P/M/G)" | |
read grandeur | |
if [ "$grandeur" = "M" -o "$grandeur" = "m" ]; then | |
(( index++ )) | |
break | |
elif [ "$grandeur" = "G" -o "$grandeur" = "g" ]; then | |
(( index++ )) | |
(( index++ )) #lazy power | |
break | |
else | |
break | |
fi | |
done | |
elif [ "$commande" = "2" ]; then | |
index=3 | |
elif [ "$commande" = "3" ]; then | |
index=4 | |
while [ 1 ]; | |
do | |
echo "> Format (P/M/G)" | |
read grandeur | |
if [ "$grandeur" = "M" -o "$grandeur" = "m" ]; then | |
(( index++ )) | |
break | |
elif [ "$grandeur" = "G" -o "$grandeur" = "g" ]; then | |
(( index++ )) | |
(( index++ )) #lazy power | |
break | |
else | |
break | |
fi | |
done | |
elif [ "$commande" = "4" ]; then | |
index=7 | |
else | |
echo | |
echo "Commande terminee." | |
echo | |
break | |
fi | |
echo "Combiens de $grandeur ${nomMenu[$commande-1]} ?" | |
read qnty | |
finalPrice=$(expr $finalPrice+${pFinal[$index]}*$qnty | bc) | |
echo "cout final: $finalPrice" | |
done | |
echo "prix final: $finalPrice" | |
exit 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment