
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.