Passagem de arquivo com espaco no nome dentro de uma variavel

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

Marcos Barbosa
marcosbarbosabr

(usa Debian)

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



  


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

Paulo
paulo1205

(usa Ubuntu)

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

Marcelo Oliver
msoliver

(usa Debian)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts