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

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

Fellype
Fellype

(usa Slackware)

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.


  


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

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Fellype
Fellype

(usa Slackware)

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]

Paulo
paulo1205

(usa Ubuntu)

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]

Fellype
Fellype

(usa Slackware)

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!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts