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

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

Re: [shell-script] Concatenar variáveis do laço for


From: Julio C. Neves
Subject: Re: [shell-script] Concatenar variáveis do laço for
Date: Tue, 29 Apr 2014 13:32:37 -0300

O for é uma solução bem mais lenta que as seguintes:

» Para colocar na variável Nomes
    Nomes=$(cat /tmp/nomes.txt)

» Para colocar no vetor Nomes
    # Até o Bash 3
        Nomes=($(cat /tmp/nomes.txt))
    # A partir do Bash 4
        Mapfile Nomes < /tmp/nomes.txt
A última é a mais veloz

Mas temos de tomar alguns cuidados, veja:
$ cat frutas
abacate
maçã
morango
pera
tangerina
uva

$ Nomes=$(cat frutas)   # Colocando em uma variável
$ echo $Nomes           # Bobeando com o $IFS
abacate maçã morango pera tangerina uva
$ echo "$Nomes"         # Processo certo
abacate
maçã
morango
pera
tangerina
uva

Usando vetores:
$ Nomes=($(cat frutas))
$ echo $Nomes
abacate             # Aparece somente a 1ª
$ echo ${Nomes[@]}  # Para listar todas
abacate maçã morango pera tangerina uva
$ mapfile Nomes < frutas
echo ${Nomes[@]}
abacate maçã morango pera tangerina uva
$ echo ${Nomes[0]}   # Lista somente o elemento zero
abacate
$ echo ${Nomes[3]}   # Lista o elemento três
pera

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 26-30/05
Dou treinamento de shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.



Em 29 de abril de 2014 12:10, <address@hidden> escreveu:
 

Mestres.
Apenas para exemplificar, tenho um arquivo "/tmp/nomes.tst" com o seguinte conteúdo:

Juca
Jose
Joao

Fiz um script assim:

rm /tmp/result.txt 2>/dev/null
for nome in `cat /tmp/nomes.txt` ; do
echo $nome >> /tmp/result.txt
done
cat /tmp/result.txt

Resultado:

Juca
Jose
Joao

Script inútil, não é mesmo? :P

Pois bem. Será possível armazenar o resultado em uma variável, sem ter que gravar em arquivo, para ser usada fora do laço for?
Essa variavel teria o seguinte valor: "juca, jose, joao"

Grato desde já.

Nero Barrabás



reply via email to

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