Pular para o conteúdo

Passagem de arquivo com espaco no nome dentro de uma variavel

Responder tópico
  • Denunciar
  • Indicar

1. Passagem de arquivo com espaco no nome dentro de uma variavel

Enviado em 09/04/2019 - 10:33h

Srs
Peço ajuda de vocês.
Estou precisando manipular uma variavel que tenha dentro varios nomes de arquivos, mas existem nomes de arquivos que tem ESPACO...
E colocando " (aspas duplas), funciona via linha de comando pura, mas se eu passar via variavel, nao funciona... vou colocar um script de teste para voces entenderem melhor:
--
#!/bin/bash

VAR='"/dados/aplicacao/arquivo.txt" "/dados/aplicacao/(2019-04-08 203001540)Run100.ERR" "/dados/aplicacao/(2019-04-05 203213233)Run101.ERR"'
#VAR="\"/dados/aplicacao/arquivo.txt\""
echo "Corpo de email teste" | mutt -s "Assunto teste" -a $VAR -- marcos.barbosa@empresa.com.br
--
O script acima dá erro !!! Ele nao consegue interpretar na passagem pra variavel... Sem aspas funciona pros arquivos comuns, ok.. Mas não funciona pros arquivos que tem espaco no nome... Dá o erro abaixo:
Can't stat "dados/aplicacao/arquivo.txt": Arquivo ou diret▒rio n▒o encontrado
"dados/aplicacao/arquivo.txt": n▒o foi poss▒vel anexar o arquivo.

E outra coisa.. se eu mandar via linha de comando FUNCIONA! Vejam:
echo "Corpo de email teste" | mutt -s "Assunto teste" -a "/dados/aplicacao/arquivo.txt" "/dados/aplicacao/(2019-04-08 203001540)Run100.ERR" "/dados/aplicacao/(2019-04-05 203213233)Run101.ERR" -- marcos.barbosa@empresa.com.br

A linha de comando acima funciona perfeitamente, ou seja, o erro não está no mutt que estou usando e sim na passagem de paramentros pela variavel..
Se puderem me ajudar, agradeço muito..
Espero estar compreensível o problema.. rssss

Abraco
Marcos Barbosa

Responder tópico

2. Re: Passagem de arquivo com espaco no nome dentro de uma variavel

Enviado em 09/04/2019 - 13:25h

Use arrays.

ARQUIVOS=("arq 1" "arq 2", "arq 3")
mutt -s "Titulo da mensagem" -a "${ARQUIVOS[@]}" -- destinatario@destino.com


Se não for exatamente essa sintaxe (não testei), será parecida com isso.



... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Re: Passagem de arquivo com espaco no nome dentro de uma variavel

Enviado em 09/04/2019 - 16:43h


marcosbarbosabr escreveu:

Srs
Peço ajuda de vocês.
Estou precisando manipular uma variavel que tenha dentro varios nomes de arquivos, mas existem nomes de arquivos que tem ESPACO...
E colocando " (aspas duplas), funciona via linha de comando pura, mas se eu passar via variavel, nao funciona... vou colocar um script de teste para voces entenderem melhor:
--
#!/bin/bash

VAR='"/dados/aplicacao/arquivo.txt" "/dados/aplicacao/(2019-04-08 203001540)Run100.ERR" "/dados/aplicacao/(2019-04-05 203213233)Run101.ERR"'
#VAR="\"/dados/aplicacao/arquivo.txt\""
echo "Corpo de email teste" | mutt -s "Assunto teste" -a $VAR -- marcos.barbosa@empresa.com.br
--
O script acima dá erro !!! Ele nao consegue interpretar na passagem pra variavel... Sem aspas funciona pros arquivos comuns, ok.. Mas não funciona pros arquivos que tem espaco no nome... Dá o erro abaixo:
Can't stat "dados/aplicacao/arquivo.txt": Arquivo ou diret▒rio n▒o encontrado
"dados/aplicacao/arquivo.txt": n▒o foi poss▒vel anexar o arquivo.

E outra coisa.. se eu mandar via linha de comando FUNCIONA! Vejam:
echo "Corpo de email teste" | mutt -s "Assunto teste" -a "/dados/aplicacao/arquivo.txt" "/dados/aplicacao/(2019-04-08 203001540)Run100.ERR" "/dados/aplicacao/(2019-04-05 203213233)Run101.ERR" -- marcos.barbosa@empresa.com.br

A linha de comando acima funciona perfeitamente, ou seja, o erro não está no mutt que estou usando e sim na passagem de paramentros pela variavel..
Se puderem me ajudar, agradeço muito..
Espero estar compreensível o problema.. rssss

Abraco
Marcos Barbosa
Marcos Boa tarde.
Vejo que o "mais crítico" são os "( )" no nome dos arquivos....
testando aqui, só consegui listar o conteúdo do arquivo, escapando os parêntesis e o espaço, exemplo:
cat \(2019-04-08\ 203001540\)Run100.ERR 

Com o "comando" abaixo, funcionou.... Listou o conteúdo dos arquivos. Não testei com o mutt
for arq in "(2019-04-08 203001540)Run100.ERR" "(2019-04-05 203213233)Run101.ERR";do 
echo "$arq";cat "${arq}";
done


#Para Testar:
for arq in "(2019-04-08 203001540)Run100.ERR" "(2019-04-05 203213233)Run101.ERR";do
echo "Corpo de email teste" | mutt -s "Assunto teste" -a "${arq}" -- marcos.barbosa@empresa.com.br
done


Att.: Marcelo Oliver

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder