Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Génération de caractères non alphanumériques en bash

6 réponses
Avatar
Kevin Denis
Bonjour,

Je cherche a générer une suite d'octets pseudo aléatoire en bash.
Le but est de constituer un tableau:
variable=<valeur aleatoire>
variable2=<valeur aleatoire>
variable3=<valeur aleatoire>
variable4=<valeur aleatoire>
variable5=<valeur aleatoire>
(etc..)

La ou ca se complique, c'est que la valeur aléatoire ne doit pas être
que alphanumérique.

Or donc, comment générer en bash des caractères non-alphanumériques?

L'aléatoire est vaguement important, c'est à dire que $RANDOM est
acceptable.

Merci
--
Kevin

6 réponses

Avatar
Stephane CHAZELAS
2008-07-01, 14:21(+00), Kevin Denis:
[...]
Je cherche a générer une suite d'octets pseudo aléatoire en bash.
Le but est de constituer un tableau:
variable=<valeur aleatoire>
variable2=<valeur aleatoire>
variable3=<valeur aleatoire>
variable4=<valeur aleatoire>
variable5=<valeur aleatoire>
(etc..)

La ou ca se complique, c'est que la valeur aléatoire ne doit pas être
que alphanumérique.

Or donc, comment générer en bash des caractères non-alphanumériques?

L'aléatoire est vaguement important, c'est à dire que $RANDOM est
acceptable.


[...]

awk et printf("%c", int(rand() * 255 + 1)).

Note qu'une variable shell (autre que zsh) ne peut contenir le
caractere NUL (''). Les variables de gawk (au moins) peuvent.

--
Stéphane
Avatar
Cyrille Lefevre
Stephane CHAZELAS a écrit :
2008-07-01, 14:21(+00), Kevin Denis:
[...]
Je cherche a générer une suite d'octets pseudo aléatoire en bash .
Le but est de constituer un tableau:
variable=<valeur aleatoire>
variable2=<valeur aleatoire>
variable3=<valeur aleatoire>
variable4=<valeur aleatoire>
variable5=<valeur aleatoire>
(etc..)

La ou ca se complique, c'est que la valeur aléatoire ne doit pas ê tre
que alphanumérique.

Or donc, comment générer en bash des caractères non-alphanumér iques?

L'aléatoire est vaguement important, c'est à dire que $RANDOM est
acceptable.


[...]

awk et printf("%c", int(rand() * 255 + 1)).

Note qu'une variable shell (autre que zsh) ne peut contenir le
caractere NUL (''). Les variables de gawk (au moins) peuvent.





Salut,

*en bash il a dit* :P

echo -e "$(printf %o $(( RANDOM % ( 255 - 32 + 1 ) + 32 )))"

on décompose :

$(( RANDOM % ( 255 - 32 + 1 ) + 32 ))

retourne une valeur décimale entre 32 et 255

$(printf %o ...)

conversion décimale => octal

echo -e "..."

-e interprète les séquences xxx

en ksh, c'est presque plus simple, mais on est obligé de passer par une
variable intermédiaire :

typeset -i8 o=$(( RANDOM % ( 255 - 32 + 1 ) + 32 ))
echo "${o#8#}"

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Avatar
Kevin Denis
Le 01-07-2008, Stephane CHAZELAS a écrit :
[...]
Je cherche a générer une suite d'octets pseudo aléatoire en bash.
Le but est de constituer un tableau:
variable=<valeur aleatoire>
variable2=<valeur aleatoire>
variable3=<valeur aleatoire>
variable4=<valeur aleatoire>
variable5=<valeur aleatoire>
(etc..)

La ou ca se complique, c'est que la valeur aléatoire ne doit pas être
que alphanumérique.

Or donc, comment générer en bash des caractères non-alphanumériques?

L'aléatoire est vaguement important, c'est à dire que $RANDOM est
acceptable.


[...]

awk et printf("%c", int(rand() * 255 + 1)).



Impeccable, merci.

Note qu'une variable shell (autre que zsh) ne peut contenir le
caractere NUL (''). Les variables de gawk (au moins) peuvent.



Ok. J'affinerai un peu alors.
--
Kevin
Avatar
Kevin Denis
Le 01-07-2008, Cyrille Lefevre a écrit :
L'aléatoire est vaguement important, c'est à dire que $RANDOM est
acceptable.


[...]

awk et printf("%c", int(rand() * 255 + 1)).



*en bash il a dit* :P



Effectivement, je suis imprécis. Ce que je souhaite, c'est un script
bash utilisant grosso modo ce qu'on trouve habituellement sur un
linux.

echo -e "$(printf %o $(( RANDOM % ( 255 - 32 + 1 ) + 32 )))"

on décompose :

$(( RANDOM % ( 255 - 32 + 1 ) + 32 ))

retourne une valeur décimale entre 32 et 255

$(printf %o ...)

conversion décimale => octal

echo -e "..."

-e interprète les séquences xxx



Ok, je conserve dans mes archives aussi. Merci
--
Kevin
Avatar
Thierry B.
--{ Kevin Denis a plopé ceci: }--

awk et printf("%c", int(rand() * 255 + 1)).



*en bash il a dit* :P



Effectivement, je suis imprécis. Ce que je souhaite, c'est un script
bash utilisant grosso modo ce qu'on trouve habituellement sur un
linux.



Voilà. Quand je confectionne un programme en Bash, je voudrais
quand même être certain qu'il fonctionne partout où on peut
installer un Bash récent. Si l'un d'entre vous est au courant
de soucis de portabilité, qu'il s'exprime maintenant, ou qu'il
se taise à jamais[*]


* bon, il peut revenir vendredi...


--
Why drink and drive when you can smoke and fly?
Avatar
Cyrille Lefevre
Thierry B. a écrit :
--{ Kevin Denis a plopé ceci: }--

awk et printf("%c", int(rand() * 255 + 1)).


*en bash il a dit* :P



Effectivement, je suis imprécis. Ce que je souhaite, c'est un script
bash utilisant grosso modo ce qu'on trouve habituellement sur un
linux.



Voilà. Quand je confectionne un programme en Bash, je voudrais
quand même être certain qu'il fonctionne partout où on peut
installer un Bash récent. Si l'un d'entre vous est au courant
de soucis de portabilité, qu'il s'exprime maintenant, ou qu'il
se taise à jamais[*]

* bon, il peut revenir vendredi...



Bonjour,

change de shell alors car bash est truffé de bugs dont certains biens
connus traverses les années et les versions !

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.