Mega Sena

Publicado por Pedro Robson Leão (última atualização em 29/06/2012)

[ Hits: 6.083 ]

Download megasena.sh




O script faz uma brincadeira para demonstrar de forma prática exemplo de uso de laços e variáveis em Bash-script de forma avançada.

PS: Caso alguém fique milionário graças ao script, lembre-se de contribuir minha parte a http://www.fsf.org/ e também auxiliar programadores independentes por aí ;)

Vlw

  



Esconder código-fonte

#!/bin/bash

NUMBERS=;

for ((i=0;i<6;)) ; do
        r=$((RANDOM%60));

        [ ! -z "${NUMBERS}" ] && {
                r=$( echo ${r} | egrep -v "${NUMBERS}0" );
                [ -z "${r}" ] && continue;

        }
        NUMBERS+=${r};
        i=$((i+1));

        [ $i -lt 6 ] && NUMBERS+="|";
done


echo ${NUMBERS//|/ };

Scripts recomendados

Limitando largura de banda com o CBQ

Firewall simples, com opções de redirecionamento

bloqfor

Plugin do Nagios para checar disco via SNMP

Backup com rsync e ssh


  

Comentários
[1] Comentário enviado por quartodazona em 02/07/2012 - 00:38h

Olá amigo!
Testei seu script para tentar ser milionário, mas ele retorna erro.

megasena.sh: 5: megasena.sh: Syntax error: Bad for loop variable

Bem, eu não entendo muito de shell script, por isso eu não posso dizer que o "do" que só vi até hoje no while funcionaria nele e também não estou acostumado a ter somente 2 parâmetros na assinatura do for.

Se eu ficar milionário por conta do seu script, me lembrarei de você.


[2] Comentário enviado por pleao em 02/07/2012 - 10:19h

Opa :D

Então.

como vc comentou, rodei aqui novamente.

Segue a saida.


Não sei se tem algo a ver com sua versão de BASH.

O for com dois parametros não tem problema.

Voce consegue até fazer um forever "for(;;)", o "do/done" faz a marcação de bloco de codigo.

Qualquer duvida manda uma mensagem

[email protected]:~$ cat x.sh
#!/bin/bash

NUMBERS=;

for ((i=0;i<6;)) ; do
r=$((RANDOM%60));

[ ! -z "${NUMBERS}" ] && {
r=$( echo ${r} | egrep -v "${NUMBERS}0" );
[ -z "${r}" ] && continue;

}
NUMBERS+=${r};
i=$((i+1));

[ $i -lt 6 ] && NUMBERS+="|";
done


echo ${NUMBERS//|/ };
[email protected]:~$ bash ./x.sh
24 29 49 27 46 14
[email protected]:~$ echo $BASH_VERSION
4.2.24(1)-release


[1] Comentário enviado por quartodazona em 02/07/2012 - 00:38h:

Olá amigo!
Testei seu script para tentar ser milionário, mas ele retorna erro.

megasena.sh: 5: megasena.sh: Syntax error: Bad for loop variable

Bem, eu não entendo muito de shell script, por isso eu não posso dizer que o "do" que só vi até hoje no while funcionaria nele e também não estou acostumado a ter somente 2 parâmetros na assinatura do for.

Se eu ficar milionário por conta do seu script, me lembrarei de você.



[3] Comentário enviado por reynaldohortensi em 23/01/2021 - 17:42h

Gostei do seu (mas não entendi tudo).
O que essa linha faz?: [ ! -z "${NUMBERS}" ] && { r=$( echo ${r} | egrep -v "${NUMBERS}0" ); [ -z "${r}" ] && continue;}


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts