É possível ter uma variável que escolhe um número aleatório entre três números pré-decididos?
Amostra:
var= 10 or 100 or 1000
shell-script
variable
random
Espen Larsen
fonte
fonte
Respostas:
Use uma matriz para armazenar os valores e escolha entre eles usando a variável interna
$RANDOM
. Por exemplo,A qualidade da aleatoriedade não será a melhor possível (leia os bytes
/dev/urandom
para isso), mas deve ser mais do que suficiente para um script.Nota 1: Como as pessoas têm observado nos comentários, em vez de inicializar os elementos da matriz individualmente uma lata, claro, usar um Litteral array:
x=(10 100 1000)
.Nota 2: Em vez de codificar o número de elementos na matriz, um elemento radom pode ser extraído por
${x[$RANDOM%${#x[@]}]}
.fonte
x=(10 100 1000)
cria uma matriz de um literal em bash, isso seria mais legível e mais idiomáticax[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.
algo assim?Se você estiver usando o bash (ou zsh ou ksh93 ), basta fazer o seguinte:
ou
atribuí-lo a var
fonte
Você também pode usar o
shuf
utilitário GNU coreutils :Usar
RANDOM
conforme as outras respostas é quase certamente mais rápido.fonte
fonte
Aqui está uma maneira um pouco enigmática:
Isso atribuirá o valor aleatório
$var
conforme necessário. Aprintf
string de formato é1%0Nd
- isso faz0
com que seja impresso comN
zeros à esquerda, ondeN
haverá um número inteiro aleatório no intervalo[1,3]
.fonte