Iterar sobre variáveis com espac

1. Iterar sobre variáveis com espac

Anderson Pablo
pseudonimo

(usa Slackware)

Enviado em 30/04/2008 - 18:16h

Oi Gente,

como eu faço pra iterar sobre valores de uma variável separados por espaço, sendo que esses valores podem conter espaços tb, por exemplo:

NOMES="Nome Um NomeDois"

for i in $NOMES
do
echo $i
done

se que se fizer isso vai imprimir uma palava em cada linha, mas eu gostaria que fosse impresso desta forma:

Nome Um
NomeDois

Há alguma que eu possa escrever o valor da variável de modo que a iteração seja como o desejado??

flws


  


2. Re: Iterar sobre variáveis com espac

Denis Doria
thuck

(usa Debian)

Enviado em 01/05/2008 - 09:54h

Da maneira que você quer creio que não haja possibilidade. A única forma que eu vejo seria tendo um separador entre os nomes como um ':'; sem isso não tem como você adivinhar se um nome será "Joao"; ou "Pedro Henrique" ou ainda "Manuela da Silva Santos Castro Neves".


3. mas é isso que eu quero...

Anderson Pablo
pseudonimo

(usa Slackware)

Enviado em 01/05/2008 - 12:08h

mas é isso mesmo que eu quero... alguma forma de de escrever a *variável* e o loop de forma que eu possa iterar sobre ele... acho que me expressei mal na pergunda....

pode ser qualquer separador, mas eu não sei como iterar nos nomes com o 'for' usando outro tipo de separador no lugar do espaço... por exemplo, se o valor da variável for "Macos:Ana Maria" se usar o 'for' simples (o que eu escrevi acima) a saída vai ser:

Marcos:Ana
Maria

como iterar da forma correta usando qualquer separador para as palavras??


4. Variável interna IFS

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 01/05/2008 - 18:51h

Não sei se é o que você quer, mas já tentou desse modo:

var="nomeum:esse e o nome dois:nometres"
IFS=:

for i in $var
do
echo $i
done

Saida:
nome um
esse e o nome dois
nometres

A variável IFS (built-in do bash) é a responsável pelos separadores de campo, o seu valor padrão e:
"TAB+ESPAÇO+LINEFEED". O que eu fiz foi alterar o valor padrão para dois pontos (IFS=:), desse modo, ao utilizar a variável $var no for, a saída terá aquele formato lá em cima!


5. Perfeito!!

Anderson Pablo
pseudonimo

(usa Slackware)

Enviado em 02/05/2008 - 01:53h

era exatamente isto que eu estava querendo!

valeu thuck e SMarcell pela ajuda!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts