Pular para o conteúdo

Ignorar espaços em branco em nomes de pastas em script [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Ignorar espaços em branco em nomes de pastas em script [RESOLVIDO]

Enviado em 02/05/2013 - 11:19h

Olá,
Estou tendo um problema com espaços em branco em nomes de pastas num script. Simplesmente não encontro uma maneira de ignorar os espaços em branco ao passar um nome de pasta como variável. O código abaixo ilustra o que estou tentando fazer:


#!/bin/sh

RadiosFolder=" \
Radio\ Heavy\ Metal\ Attack \
RockNation \
"

for j in $RadiosFolder;
do
cp -vR $j/ /media/PenDrive/
done


O problema é que a lista $RadiosFolder está recebendo a pasta "Radio Heavy Metal Attack" como quatro pastas diferentes ("Radio" "Heavy" "Metal" "Attack"). Ou seja, os espaços em branco não estão sendo ignorados ao utilizar o "\" antes dos espaços.

Como posso resolver isto?

Desde já agradeço.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Ignorar espaços em branco em nomes de pastas em script [RESOLVIDO]

Enviado em 02/05/2013 - 14:35h

Tente remover as aspas duplas, se não der certo, tente colocar a variável na msm linha (removendo a primeira barra invertida).

3. Re: Ignorar espaços em branco em nomes de pastas em script [RESOLVIDO]

Enviado em 02/05/2013 - 16:30h

renato_pacheco escreveu:

Tente remover as aspas duplas, se não der certo, tente colocar a variável na msm linha (removendo a primeira barra invertida).


Infelizmente não funcionou com nenhuma destas dicas.
Dê uma olhada nisto:

fellype@vuv:recorded_radios$ l=Radio\ Heavy\ Metal\ Attack
fellype@vuv:recorded_radios$ echo $l
Radio Heavy Metal Attack
fellype@vuv:recorded_radios$ cp -vR $l/ /media/PenDrive/
cp: cannot stat 'Radio': No such file or directory
cp: cannot stat 'Heavy': No such file or directory
cp: cannot stat 'Metal': No such file or directory
cp: cannot stat 'Attack': No such file or directory
fellype@vuv:recorded_radios$


E, além disso, se eu colocar o nome da outra pasta depois de "Attack", ela será interpretada como um comando.

4. Re: Ignorar espaços em branco em nomes de pastas em script [RESOLVIDO]

Enviado em 02/05/2013 - 19:51h

Espaços dão problema se você não usar aspas.

Veja o seguinte:

v1="Um espaco"
v2="Dois espacos"
v3="Tres espacos"

echo $v1:$v2:$v3
Um espaco:Dois espacos:Tres espacos

echo "$v1:$v2:$v3"
Um espaco:Dois espacos:Tres espacos


Já para ter várias coisas com espaços, talvez seja melhor você usar um array, em lugar de um variável só.

5. Re: Ignorar espaços em branco em nomes de pastas em script [RESOLVIDO]

Enviado em 03/05/2013 - 12:01h

Ok! Tudo certo agora.
Seguindo a sugestão do @paulo1205 (utilizar um array) e uma dica publicada aqui no VOL (http://www.vivaolinux.com.br/dica/Utilizando-arrays-em-shell-script), o script ficou assim:


#!/bin/sh
RadiosFolder=("Radio Heavy Metal Attack" "RockNation")
n=$(echo "${#RadiosFolder[@]}-1" | bc)
for j in $(seq 0 $n)
do
F=${RadiosFolder[j]}
cp -vR "$F"/ /media/PenDrive/
done


Desta forma, o problema dos espaços em branco nos nomes de pastas é resolvido.
Valeu pessoal!

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder