Skip to content

Instantly share code, notes, and snippets.

@TwiN
Created May 19, 2016 14:18
Show Gist options
  • Save TwiN/88e940df9fe16d39356e6afc1367f66c to your computer and use it in GitHub Desktop.
Save TwiN/88e940df9fe16d39356e6afc1367f66c to your computer and use it in GitHub Desktop.
#!/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">.*?&deg;' <<< $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