# Also support other operation as * / and - although / doesn't really work because it becames a float # Also super weird with letters and doesn't seems to convert them to ascii ?? so weird... # might be a bit dangerous cuz bc directly evaluate the expression passe in arg, so if there is any vulnerabilities like code injection in bc, then it will be a problem if [ $# -eq 0 ]; then # Original random number generation if no argument while :; do # on utilise ce code pour etre sur qu'il n'y a pas de biais sur la génération de nombres aléatoire car il y a plus de chance sinon de tomber # sur un nombre entre 0-17 que sur un nombre entre 0-49 ra=$RANDOM ((ra < 32750)) && r1=$((ra % 50)) && break # On peut avoir aussi une chance infiniment petite que la boucle ne finisse jamais donc a voir.... done while :; do # Pareil mais les valeures favorisées aurait été entre 0-25 rb=$RANDOM ((rb < 32742)) && r2=$((rb % 51)) && break done result=$((r1 + r2)) message="$r1 + $r2" else expression="$1" result=$(echo "scale=2; $expression" | bc -l) message="$expression" fi if [[ ${#result} -gt 2 ]]; then echo "Note: Result has more than 2 digits - won't display in cow's eyes" fi if [[ ${#result} -lt 2 ]]; then echo "Note: Result has less than 2 digits - will render weirdly" fi # Max deux digit si plus -> truncate; si moins on a un rendu bizarre cowsay -e "$result" "$message"