Como definir variáveis ​​bash para números aleatórios



Experimente Nosso Instrumento Para Eliminar Problemas

Você pode facilmente gerar um número aleatório no prompt do bash, que pode ser usado para definir esse número como uma variável. Isso é útil para tudo, desde escrever certos tipos de scripts até a execução de aventuras de RPG de mesa. Esteja você escrevendo uma campanha de D&D ou criando um utilitário na poderosa linguagem bash, você normalmente consegue se safar com uma única linha de código. Esta também é uma ferramenta muito útil ao tentar realizar certas verificações de segurança, mas você deve lembrar que bons crackers podem contornar esses geradores de números simples. Eles ainda são úteis para gerar certos tipos de senhas e códigos, o que pode ajudar a manter a segurança de qualquer maneira.



Existem algumas maneiras diferentes de fazer isso, e nem todas as técnicas são adequadas para todas as situações, então fizemos o possível para analisar cada forma e testá-la para garantir que funcionasse. Você precisará trabalhar em um terminal para isso, então use Ctrl + Alt + T ou Super (Windows) + T para abrir um terminal gráfico, inicie um digitando terminal no Dash, selecione-o no Application ou Whisker e menus de Ferramentas do Sistema ou vá para um terminal virtual usando Ctrl, Alt e uma tecla entre F1 e F6.



Método 1: escolhendo um byte aleatório completo

Você pode gerar um número aleatório entre 1 e 256 executando o seguinte comando diretamente no prompt do bash:



de -An -N1 -tu1 / dev / urandom

Embora às vezes você possa ver este comando referenciado a / dev / random ao invés de / dev / urandom, você provavelmente não vai querer executar desta forma. Isso pode, sem querer, impedir que outros programas usem o gerador de sementes aleatórias durante o uso dele. Depois de executar o programa e obter um número, você pode ter certeza de que também funcionará assim:



ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))

Isso definirá a variável ranNum para um número entre 1 e 256, selecionado no momento em que você executá-lo. Você pode executá-lo a partir da linha de comando ou de dentro de um script e deve funcionar de qualquer maneira. Lembre-se de que você pode substituir ranNum por qualquer nome de variável válido.

Método 2: Definir uma variável para um número aleatório entre 1 e qualquer

Você pode executar echo $ [RANDOM% 40 + 1] na linha de comando para enviar um número aleatório entre 1 e 40 direto para a saída padrão, mas também pode substituir o 40 no comando por praticamente qualquer número. Eventualmente, a arquitetura de sua máquina host ficará sem dígitos ou talvez o bash, mas é duvidoso que você precise de um número tão alto de qualquer maneira.

Suponhamos que você queira gerar um número aleatório entre 1 e 10 para a configuração da sua variável. Você pode executar:

ranNum = $ [RANDOM% 10 + 1]

Lembre-se de que você pode substituir 10 por qualquer valor superior que desejar. Este valor é inclusivo, o que significa que 10 é um valor retornado válido. Se você quiser reduzi-lo em um, basta fazer o valor 9 em vez de usar matemática do estilo C ou C ++ -1. Eles são desnecessários ao definir uma variável usando este método e, na verdade, gerarão resultados inesperados adicionando ou subtraindo dígitos.

Método 3: Selecionando um Único Bit Aleatório

Se você precisar definir uma variável para um bit aleatório de zero ou um, então você pode querer modificar o código anterior da seguinte maneira:

ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))

Este código definirá ranNum como 1 ou 0, dependendo se os números da amostra / dev / urandom arquivo eram pares ou ímpares. Isso pode ser útil se você precisar definir uma equação simples de sim ou não para um ou outro estado.

Se isso não for suficientemente aleatório para o que você está trabalhando, então você pode obter um número um pouco mais aleatório fazendo uma chamada para o diretório / proc / sys / kernel / random com:

ranNum = $ ((0x $ (cut -c1-1 / proc / sys / kernel / random / uuid)% 2))

Mais uma vez, porém, isso só definirá a variável como 1 ou 0, o que é perfeito para lógica binária, mas não tão útil para momentos em que você pode precisar de um número maior. Você pode, no entanto, usar qualquer uma dessas linhas em um script bash se precisar fazer isso. Esta segunda opção pode realmente ser melhor para situações em que a primeira falha também

Método 4: Criação de scripts bash para retornar números aleatórios

Se você deseja ter uma ferramenta útil para gerar um número aleatório a qualquer momento, pode criar um script de linha de comando para fazer isso. Isso usa nada mais do que a linguagem bash padrão que a maioria dos prompts do Linux modernos têm, portanto, praticamente qualquer distribuição Linux moderna e vários sistemas operacionais baseados em BSD devem lidar com isso muito bem. Você pode querer usar cd ~ / .local / bin antes de prosseguir para se certificar de que terá seu script em um lugar onde possa executá-lo de qualquer lugar.

Digite nano random ou vi random para começar, embora você possa usar um nome diferente para o seu script, se desejar. Você também pode usar outro editor de texto, se preferir. Digamos que você queira criar um que retorne 1 ou 0 quando digitado na linha de comando. Digite o seguinte e pressione Ctrl + O para salvá-lo se estiver usando o nano:

#! / bin / bash ranNum = $ (($ RANDOM% 2)) echo $ ranNum

Digite Ctrl + X para sair do editor de texto e, uma vez na linha de comando, use chmod + x random para tornar seu script utilizável. Você pode, é claro, usar ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) ou qualquer outra linha no lugar de ranNum = $ (($ RANDOM% 2)) para que você possa controlar exatamente que tipo de número deseja de volta. Digamos que você queira selecionar um número entre 1 e 50 regularmente. Altere o texto do script bash para:

#! / bin / bash ranNum = $ [RANDOM% 50 + 1] echo $ ranNum

Agora você pode executá-lo facilmente a partir da linha de comando, digitando aleatório sempre que desejar gerar um número aleatório.

4 minutos lidos