substituição de variáveis

1. substituição de variáveis

Rogério Brasiliense Machado Filho
rogeriomachado

(usa Ubuntu)

Enviado em 09/06/2010 - 16:45h

Olá pessoal, estou com uma dúvida.

Eu utilizo variáveis que contemplam vários arquivos, os mesmos estão separados por um espaço " " e o espaço dos nomes eu compenso com uma barra.

exemplo:
i="teste\ 1.txt teste\ 2.txt"
são dois arquivos, o "teste 1.txt" e o "teste 2.txt"

Tendo essa variável eu gostaria de separar, os dois arquivos utilizando um "for" para poder fazer uma série de testes separados.

Eu só consegui fazer isso usando um outro script, mas isso é muito ruim, principalmente quando o laço de controle fica grande e se tem que criar muitos desse tipo.

Alguém sabe alguma forma melhor?

Exemplo do meu teste:

$ i="teste\ 1.txt teste\ 2.txt"
$ echo $i
teste\ 1.txt teste\ 2.txt
$ for a in $i; do
> echo $a
> done
teste\
1.txt
teste\
2.txt
$ for a in "$i"; do echo $a; done
teste\ 1.txt teste\ 2.txt
$ for a in teste\ 1.txt teste\ 2.txt; do
> echo $a
> done
teste 1.txt
teste 2.txt
$ echo "for a in $i; do echo $a; done" > /tmp/script.sh
$ cat script.sh
for a in teste\ 1.txt teste\ 2.txt; do echo teste 2.txt; done
$ bash script.sh
teste 2.txt
teste 2.txt

OBS: percebam que ao digitar direto o valor da variável (sem fazer substituição) ou utilizar um outro script conseguimos o mesmo efeito, que é separar os dois arquivos.


  


2. Re: substituição de variáveis

Daniel Fernandes
volcom

(usa Debian)

Enviado em 09/06/2010 - 17:14h

Não sei se é a solução mais elegante, mas com o awk você pode separar a variável em duas novas variáveis...entendeu? hehe

Vou tentar exemplificar:

$ i="teste\ 1.txt teste\ 2.txt"
$ echo $i | awk '{print $1 $2}'
teste\ 1.txt

Atribua isso a uma nova variável:

$ x=`echo $i | awk '{print $1 $2}'`
$ echo $x
teste\1.txt

Repare que uso craze para atribuir o resultado de um comando à uma variável.

Espero que ajude...

Abraço


3. Re: substituição de variáveis

Rogério Brasiliense Machado Filho
rogeriomachado

(usa Ubuntu)

Enviado em 10/06/2010 - 15:29h

Estranho... ele você substitui o "\ " barra espaço por um "\" barra apenas. Creio que não irá rodar direito.

Mas valeu.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts