Est-il possible d'avoir une variable qui choisit un nombre aléatoire parmi trois nombres prédéterminés?
Échantillon:
var= 10 or 100 or 1000
shell-script
variable
random
Espen Larsen
la source
la source
Réponses:
Utilisez un tableau pour contenir les valeurs et choisissez parmi celles-ci à l'aide de la variable intégrée
$RANDOM
. Par exemple,La qualité de l'aléatoire ne sera pas la meilleure possible (lisez les octets
/dev/urandom
pour cela), mais elle devrait être plus que suffisante pour un script.Note 1: Comme les gens ont observé dans les commentaires, au lieu d'initialiser les éléments du tableau individuellement l' on peut bien sûr utiliser un tableau litéral:
x=(10 100 1000)
.Remarque 2: Au lieu de coder en dur le nombre d'éléments dans le tableau, un élément radom peut être extrait par
${x[$RANDOM%${#x[@]}]}
.la source
x=(10 100 1000)
crée un tableau à partir d'un littéral dans bash, ce serait plus lisible et plus idiomatiquex[0]=10 # This sets the first value of x to ten. Ten is the number of fingers that humans have (excepting birth defects or mutilation). It is also the sum of 9 and 1, or product of 5 and 2. Ten is not prime. A traditional Christmas gift is ten lords a-leaping.
quelque chose comme ça?Si vous utilisez bash (ou zsh ou ksh93 ), vous pouvez simplement faire:
ou
l'assigner à var
la source
Vous pouvez également utiliser l'
shuf
utilitaire GNU coreutils :RANDOM
Cependant, l' utilisation selon les autres réponses est presque certainement plus rapide.la source
la source
Voici une manière légèrement cryptique:
Cela attribuera la valeur aléatoire à
$var
comme requis. Laprintf
chaîne de formatage est1%0Nd
- cela entraîne0
l'impression avecN
des zéros de tête, oùN
sera un entier aléatoire dans l'intervalle[1,3]
.la source