-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > 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
Vamos absolutamente por partes. Há conceitos básicos que, aparentemente, você não conhece e que precisa estudar. 1) Executar comando em AIX é tão vago quanto dizer que o resultado depende do fluxo migratório das borboletas azuis da Tanzânia. Qual é o Shell que você usa ? Bash ? Korn ? Bourne ? 2) Declaração de variáveis Você erra quando faz $teste1=Arroz ( e em todas as outras variáveis ). Não se usa o $ na frente do nome da variável em sua declaração; somente em seu acesso. Então, o trecho correto é : teste1=Arroz teste2=Feijao teste3=Marcarrao teste4=Farofa 3) Entrada de dados no laço while: Funciona quando você faz <arquivo, já que, quando falamos de redirecionamento, falamos de arquivos, mas não funciona para subshells ( que são abertas quando você faz um `echo blabla` (embora eu prefira $(echo blabla) ) ). Então você pode valer-se dos named pipes. Utilize a construção < <(echo blabla), que irá executar o echo em um subshell e enviará o resultado para o named pipe criado pelo shell para ler o subshell. Seu código fica assim while read VAR1 VAR2 ; do echo "Var1=$VAR1 Var2=$VAR2" done < <(`echo "$teste1 $teste2 $teste3 $teste4"`) A saída dele é Var1=Arroz Var2=Feijao Marcarrao Farofa que pode ser o que você não esperava. 4) O que o while read tem a ver com laços encadeados ? Para constar, laços encadeados são o seu "for com duas variáveis". Esse é outro conceito básico de programação. Você pode encadear laços. Pode ter if encadeados, vários for encadeados ( e não somente 2 ), for dentro de while dentro de case... Recomendo vivamente leitura sobre lógica de programação e a leitura, primeiro, do ótimo Papo de Botequim (http://www.julioneves.com) e, depois, de coisas mais pesadas como o Advanced Bash-Script Guide (http://tldp.org/LDP/abs/html/). Obviamente, se você trabalha com shells diferentes do bash, pode buscar informações específicas sobre eles em suas documentações. MrBiTs -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) iEYEARECAAYFAkrDOTcACgkQrDdxWm3R8YYAxQCfYCJGjxZNuMP9zKNrmBxtpS19 ZcAAn1LFf8lNES9Vi2Oqc9T3EXFRUsZK =+e0F -----END PGP SIGNATURE-----