j'ai du mal à comprendre le fonctionnement du RANDOM dans bash, même si j'ai l'impression que c'est peut-être au niveau de la portée des variables que je ne comprends pas tout
J'ai écrit le petit script suivant, qui à chaque fois initialise le RANDOM (à chaque fois à la même valeur, 12), puis en demande la valeur (donc selon ma compréhension du man, je devrais toujours retrouver la même valeur (en bash intéractif je trouve toujours 5451).
Je fais quatre cas différents :
1. en script normal, RANDOM normal
2. en script normal, RANDOM exporté
3. dans une fonction bash
4. dans une fonction que je pipe vers cat
Voici mon code:
$ cat /tmp/testrnd.sh
#!/bin/bash
do_random()
{
RANDOM=$1
echo $RANDOM
}
# Methode 1
RANDOM=12
echo $RANDOM
# Methode 2
export RANDOM=12
echo $RANDOM
# Methode 3
do_random 12
# Methode 4 : premier test
do_random 12 | cat
# Methode 4 : deuxieme test
do_random 12 | cat
En le lançant deux fois, j'obtiens d'abord
5451
29563
5451
5753
6662
puis
5451
29563
5451
8479
9388
Ce que je ne comprends pas, c'est pourquoi je ne trouve pas le même résultat aux deux premières lignes, que change le "export" ? À la limite pour ce que je voulais faire ca ne m'ennuie pas trop (car j'ai au moins le même résultat à chaque fois que je lance le script, ce que je souhaitais), et surtout pourquoi je n'obtiens pas le même résultat pour le 4e mécanisme à chaque fois que je l'utilise ?
(Et encore moins à chaque fois que je lance le script)
Bon j'ai déjà passé trop de temps là-dessus donc je vais traiter mon problème autrement, mais ma curiosité reste entière sur le pourquoi du comment de ce comportement...
# Première réponse
Posté par peck (site web personnel) . Évalué à 3.
"export RANDOM=12" == "RANDOM=12 && echo $RANDOM > /dev/null"
Sinon, je n'ai pas le même problème que toi pour la méthode 4
[^] # Re: Première réponse
Posté par ✅ ffx . Évalué à 2.
Mon premier test (qui donne les résultats cités) était effectué avec un bash 3.00.16, mais avec un bash 3.2.33 ca fonctionne correctement.
Sans doute un ancien bug qui touche les gens qui oublient de se mettre à jour ;)
Merci pour tes remarques en tout cas.
# Il est peut-être sous Debian ?
Posté par santos . Évalué à 3.
document.getElementByTagName('moinser').desactivate();
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.