Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/09/2011, à 23:15

noo7

[Résolu] Commande random

Bonsoir,
j'essaye d'écrire un petit script qui prend une valeur "aléatoire" (dans mes recherche j'ai lu qu'il ne pouvait pas vraiment y avoir d'aléatoire en informatique) entre deux variables.
J'ai trouvé une commande qui a l'air pas mal ici : http://leeroy.kodingen.com/blog/linux/g … s-en-bash/

Mais lorsque je l’exécute le script me revoie cette erreur : Syntax error: "(" unexpected (expecting "done")

#!/bin/sh

while [ $max -le $min ]
do 
    echo "Entrez le temps minimun de la méditation (en minutes) :"
    read min
    echo "Entrez le temps maximun souhaité pour la méditation (en minutes) :"
    read max
done
nombre=0

while [ $nombre -le $min ]
do
    number=$[($RANDOM % ($[$max - $min] + 1)) + $min]
done

echo "Nombre aléatoire compris entre $min et $max ---  $nombre"
echo

#temps=$nombre*60
#wait $temps
#vlc Together.mp3

Merci.

Ps : Je suis une quiche en programmation tongue, y'a certainement des choses qui ne vont pas dans ce script.

Dernière modification par noo7 (Le 02/09/2011, à 10:19)

Hors ligne

#2 Le 02/09/2011, à 00:10

Levi59

Re : [Résolu] Commande random

Plusieurs erreur:
-Déjà, la commande de base est fausse. (du moins elle fonctionne pas chez moi)
Les opérations se font forcement sous la forme "$(( opérations ))"
-Ensuite si c'est censé utiliser une variable de bash, pourquoi mettre /bin/sh?
-Enfin, pourquoi mettre une boucle while sur la commande? Ça n'a aucun intérêt...

#!/bin/bash

while [ $max -le $min ]
do 
    echo "Entrez le temps minimun de la méditation (en minutes) :"
    read min
    echo "Entrez le temps maximun souhaité pour la méditation (en minutes) :"
    read max
done

nombre=$(( ($RANDOM % (($max - $min) + 1)) + $min ))


echo "Nombre aléatoire compris entre $min et $max ---  $nombre"
echo

Hors ligne

#3 Le 02/09/2011, à 00:31

sputnick

Re : [Résolu] Commande random

Voici une fonction condensée qui affiche un chiffre aléatoire entre min et max :

$ displayRandomNumberFromInterval() { echo $(( ( RANDOM % ($2 - $1 +1 ) ) + $1 )); } 
$ displayRandomNumberFromInterval 10 15
13

Dernière modification par sputnick (Le 02/09/2011, à 00:31)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 02/09/2011, à 10:14

noo7

Re : [Résolu] Commande random

Levi59 a écrit :

-Ensuite si c'est censé utiliser une variable de bash, pourquoi mettre /bin/sh?

Je ne sais pas, je vais me renseigner sur le sujet.

Levi59 a écrit :

-Enfin, pourquoi mettre une boucle while sur la commande? Ça n'a aucun intérêt...

Oui j'ai relu script et cette boucle est inutile.

Sinon ça fonctionne maintenant :

#!/bin/bash

while [ $max -le $min ]
do 
    echo "Entrez le temps minimun de la méditation (en minutes) :"
    read min
    echo "Entrez le temps maximun souhaité pour la méditation (en minutes) :"
    read max
done

nombre=$(( ($RANDOM % (($max - $min) + 1)) + $min ))
echo
temps=$(($nombre * 60))
sleep $temps
vlc Together.mp3

Sputnick je vais essayer de le faire avec ta fonction pour le fun.

Merci à vous deux ! cool

Dernière modification par noo7 (Le 02/09/2011, à 10:18)

Hors ligne

#5 Le 02/09/2011, à 12:29

ehmicky

Re : [Résolu] Commande random

Salut,
Attention, $RANDOM est limité à un range de 0 à 32767 (15 bits). Si tu veux un range plus grand, tu peux par exemple remplacer $RANDOM par :

$(hexdump -n32 -e '"%u"' /dev/urandom)

ici pour 32 bits.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#6 Le 02/09/2011, à 16:08

noo7

Re : [Résolu] Commande random

merci je garde ça dans un coin smile

Hors ligne