shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Minha contribuição de Feliz Ano novo


From: Julio C. Neves
Subject: Re: [shell-script] Minha contribuição de Feliz Ano novo
Date: Fri, 1 Jan 2010 11:20:51 -0200

Fala Jeferson,
Vê pra mim se assim funciona:

for Algarismo in $(echo $(eval echo {$1..$2} | sed -r 's/(.)/\1 /g')
{
     let Algarismos[Algarismo]++;
 }
for ((i=0; i<=9; i++))
{
     echo Algarismo $i = ${Algarismos[$i]:-0}
}

Procurei usar Bash puro, mas o sed estava me encafifando. Aí "vi" uma outra
saída:

Tudo=$(eval echo {$1..$2})
for ((i=0; i<${#Tudo}; i++))
{
    [ ${Tudo:i:1} ] || continue
    let Algarismo[${Tudo:i:1}]++
}
for ((i=0; i<=9; i++))
{
     printf "Algarismo %d = %2d\n" $i ${Algarismo[$i]:-0}
}

Achei estas soluções legais pq usam intensivamente vetores e expansão de
parâmetro, duas coisa muitos dos shelleiros da lista não têm o hábito de
usar.

Feliz 2010,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em DF ligue (61) 3223-3000 Curso de zenity 09-10/01;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.



2009/12/31 Jeferson Santos <address@hidden>

>
>
> Olá galera,
> Como forma de agradecer a todos pelas duvidas respondidas, nada melhor
> q um script pronto :-D
> Eu fiz esse script hoje pra contar quantas anilhas de identificação de
> cada numero eu precisava pra identificar a minha rede. Creio que possa
> realmente ser útil.
> Eu geralmente trabalho com mais recursos de tratamentos de erros e
> tal.. mas gostei de manter esse dentro da filosofia KISS.
>
> #-------------------------------------------
> #!/bin/bash
>
> #contar-anilhas.sh desenvolvido por jeferson dos santos < jeferson at
> jeferson.info>
> #este script permite calcular quantas anilhas de cada numero serão
> necessarias
> #para identificar uma quantidade X de cabos
>
> #uso:
> #contar-anilhas.sh <numero inicial> <numero final>
>
> #exemplo: contar-anilhas.sh 1 6
> #0 = 0
> #1 = 1
> #2 = 1
> #3 = 1
> #4 = 1
> #5 = 1
> #6 = 1
> #7 = 0
> #8 = 0
> #9 = 0
>
> #define todas as variaveis como 0 para não ficar nada em branco no final
> num0=0
> num1=0
> num2=0
> num3=0
> num4=0
> num5=0
> num6=0
> num7=0
> num8=0
> num9=0
>
> for NUMERO in $(seq $1 $2 | sed "s/\(.\)/\1 /g" | tr -s \ );
> do
>
> [ $NUMERO -eq 0 ] && num0=$(($num0+1))
> [ $NUMERO -eq 1 ] && num1=$(($num1+1))
> [ $NUMERO -eq 2 ] && num2=$(($num2+1))
> [ $NUMERO -eq 3 ] && num3=$(($num3+1))
> [ $NUMERO -eq 4 ] && num4=$(($num4+1))
> [ $NUMERO -eq 5 ] && num5=$(($num5+1))
> [ $NUMERO -eq 6 ] && num6=$(($num6+1))
> [ $NUMERO -eq 7 ] && num7=$(($num7+1))
> [ $NUMERO -eq 8 ] && num8=$(($num8+1))
> [ $NUMERO -eq 9 ] && num9=$(($num9+1))
>
> done
>
> echo 0 = $num0
> echo 1 = $num1
> echo 2 = $num2
> echo 3 = $num3
> echo 4 = $num4
> echo 5 = $num5
> echo 6 = $num6
> echo 7 = $num7
> echo 8 = $num8
> echo 9 = $num9
> #-------------------------------------------
>
> --
> Abraços e feliz ano novo a todos,
> Jeferson Santos
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]