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

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

Re: For com duas variaveis


From: fsilva6
Subject: Re: For com duas variaveis
Date: Thu, 01 Oct 2009 01:23:13 -0000
User-agent: eGroups-EW/0.82

Galera,
         com base nos exemplos anteriores consegui montar o script para 
executar no AIX+KSH. Abaixo o exemplo.

teste_1=Arroz
teste_2=Feijao
teste_3=Macarao
teste_4=Sal

(while read i j                                      do                         
                        
   echo $i $j                                                     
done << !                                            
`                                                    
 echo "$teste_1" "$teste_2"        
 echo "$teste_3" "$teste_4"        
`                                                    
!)   


Não sei se é a melhor solução mas tá funcionando...
Grande Abraço a todos!!!


--- Em address@hidden, "Julio C. Neves" <julio.neves@...> escreveu
>
> Vamos analisar as diferentes forma de fazer isso (apesar de achar que a
> primeira [here strings] e terceira [substituição de processos] formas não
> funcionam sob AIX + ksh):
> 
> $ echo $teste{1..4}
> Arroz Feijao Marcarrao Farofa
> $ while read VAR1 VAR2 ; do echo "Var1=$VAR1 Var2=$VAR2"; done <<< "$teste1
> $teste2 $teste3 $teste4"
> Var1=Arroz Var2=Feijao Marcarrao Farofa
> $ echo $teste1 $teste2 $teste3 $teste4 | while read VAR1 VAR2 ; do echo
> "Var1=$VAR1 Var2=$VAR2"; done
> Var1=Arroz Var2=Feijao Marcarrao Farofa
> $ while read VAR1 VAR2 ; do echo "Var1=$VAR1 Var2=$VAR2"; done < <(echo
> "$teste1 $teste2 $teste3 $teste4")
> Var1=Arroz Var2=Feijao Marcarrao Farofa
> 
> Até aqui, como vc viu, var1 recebeu Arroz e var2 recebeu o resto. Isso se
> deve à uma excelente propriedade do read que vc pode entender melhor lendo
> este 
> texto<https://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo007#E_agora_podemos_ler_os_dados_da>
> .
> 
> Para conseguir fazer o que eu acho que vc quer, é preciso passar de 2 em 2
> parâmetros para o read, e para isso, o melhor é usar o xargs, cuja saída
> default é o cmd echo. Vc pode obter muito mais informações sobre este super
> potente cmd, lendo este
> texto<https://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarBirinaite>.
> Veja então como ficaria:
> 
> $ echo "$teste1 $teste2 $teste3 $teste4" | xargs -n2 | while read VAR1 VAR2
> ; do echo "Var1=$VAR1 Var2=$VAR2"; done
> Var1=Arroz Var2=Feijao
> Var1=Marcarrao Var2=Farofa
> 
> Abraços,
> Julio
> Cursos de Shell e Zenity em 2 fins de semana?
> - Em SP ligue (11) 2125-4747;
> - Em DF ligue (61) 3223-3000 (próxima turma de 1 a 4/10);
> - No RJ ligue (21) 2561-0867;
> - Turmas fechadas em outras cidades ligue (21) 8112-9988.
> 
> 
> 2009/9/29 fsilva6 <fsilva6@...>
> 
> >
> >
> > Galera,
> > pintou uma duvida relativamente simples, mas que infelizmente não fui capaz
> > de soluciona-la. Alguém que já passou por isso poderia me ajudar.
> > Estou executando o comado abaixo no AIX, mas não estou obtendo sucesso o
> > script não consegue identificar os simbolos "<<".
> >
> > $teste1=Arroz
> > $teste2=Feijao
> > $teste3=Marcarrao
> > $teste4=Farofa
> >
> > while read VAR1 VAR2 ; do
> > echo "Var1=$VAR1 Var2=$VAR2"
> > done <<`echo "$teste1 $teste2
> > $teste3 $teste4"`
> >
> > Tomei como base o script postado pelo colega no topico anterior mas quando
> > tento obter as informações de uma variavel o script abenda. Vale lembrar que
> > isso é uma curiosidade, pois acho muito interessante um loop com duas
> > vairaveis.
> >
> > Efetuei alguns teste como o apresentado abaixo e obtive sucesso.
> >
> > while read cliente telefone ;do
> > echo "$cliente $telefone ";
> > done < telefone_cliente.csv
> >
> > ----------------------------------------------------------
> >
> > --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> > "box_ferrari" <boxferrari@> escreveu
> > >
> > > --- Em address@hidden<shell-script%40yahoogrupos.com.br>,
> > Breno Moiana <breno.moiana@> escreveu
> > > >
> > > > Assim?
> > > >
> > > > $ for x in a b c d; do for y in 1 2 3 4; do echo "x=$x, y=$y";done;done
> > > > x=a, y=1
> > > > x=a, y=2
> > > > x=a, y=3
> > > > x=a, y=4
> > > > x=b, y=1
> > > > x=b, y=2
> > > > x=b, y=3
> > > > x=b, y=4
> > > > x=c, y=1
> > > > x=c, y=2
> > > > x=c, y=3
> > > > x=c, y=4
> > > > x=d, y=1
> > > > x=d, y=2
> > > > x=d, y=3
> > > > x=d, y=4
> > > >
> > > >
> > > >
> > > > Breno.
> > > > --
> > > >
> > >
> > > Laço? Tem que ser um for? Não pode ser um while?
> > >
> > > Tipo assim:
> > >
> > >
> > > while read VAR1 VAR2 ; do
> > > echo "Var1=$VAR1 Var2=$VAR2"
> > > done < <(echo 'v1 v2
> > > v3 v4
> > > v5 v6')
> > >
> > > Var1=v1 Var2=v2
> > > Var1=v3 Var2=v4
> > > Var1=v5 Var2=v6
> > >
> > > * note que depois de v2, v4 e v6, há uma quebra de linha.
> > >
> > > No exemplo, usei um echo, mas suponha que você tenha um arquivo com 2
> > colunas e várias linhas, exemplo, uma relação de nomes e CPF's e queira
> > fazer um, digamos assim, "for", com cada linha usando ambas as informações,
> > nome e CPF, você pode usar o comando assim
> > >
> > > cristiano@mga0-fwall-dsl:~> cat lista.txt
> > > 1var_A 1var_B
> > > 2var_A 2var_B
> > > 3var_A 3var_B
> > > 4var_A 4var_B
> > > 5var_A 5var_B
> > > 6var_A 6var_B
> > > 7var_A 7var_B
> > > 8var_A 8var_B
> > > 9var_A 9var_B
> > >
> > > cristiano@mga0-fwall-dsl:~> while read NOME CPF ; do echo "Nome=$NOME
> > CPF=$CPF" ; done < lista.txt
> > > Nome=1var_A CPF=1var_B
> > > Nome=2var_A CPF=2var_B
> > > Nome=3var_A CPF=3var_B
> > > Nome=4var_A CPF=4var_B
> > > Nome=5var_A CPF=5var_B
> > > Nome=6var_A CPF=6var_B
> > > Nome=7var_A CPF=7var_B
> > > Nome=8var_A CPF=8var_B
> > > Nome=9var_A CPF=9var_B
> > >
> > > Era isso que você queria ou eu viajei?
> > >
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

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