shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Como tratar arquivo com espaço s no nome, dentro de u


From: edjunior
Subject: Re: [shell-script] Como tratar arquivo com espaço s no nome, dentro de um script
Date: Wed, 4 Apr 2007 11:38:09 -0300

tentou utilizando "eval" pra executar o comando?

eval $COMANDO


jr.

On 4/4/07, Mauricio Vieira <address@hidden> wrote:
Oi,

Verdade, tou meio enferrujado e nem lembrei do IFS. Mas não tá rolando.. Tá
dando outro erro.

#!/bin/sh

OLDIFS=$IFS
IFS='
'

[ -z $1 ] && exit 1

ARQUIVOOGG=$1
EXTENSION=${ARQUIVOOGG:${#ARQUIVOOGG}-4:4}
#echo $EXTENSION
[ $EXTENSION == '.ogg' ] || exit 1

ARQUIVOMP3=${ARQUIVOOGG%.ogg}".mp3"
ARQUIVOMP3=${ARQUIVOOGG/ogg/mp3}

COMANDO="oggdec \"${ARQUIVOOGG}\" -o - | lame - \"${ARQUIVOMP3}\""
echo $COMANDO
$COMANDO

IFS=$OLDIFS

qndo rodo, ele dá 'command not found'.
só q o oggdec tá instalado. ele encara a linha $COMANDO de forma diferente
por causa do IFS.
Se eu coloco o IFS=$OLDIFS de volta, antes de executar $COMANDO, ele dá o
erro anterior (ERROR: Can only specify one input file if output filename is
specified).

Acho q sed não rola, pq o '\ 'nao é obrigatório. eu posso rodar o script com
o arquivo entre aspas, do shell. nao vai ter '\ ' (que o tab completion
coloca por mim. Além do mais, a brincadeira é fazer todo em bash =].
Alguma outra dica?




On 4/4/07, edjunior <address@hidden> wrote:
>
>   hey
>
> a velha dica de alteração do IFS não funfa? Tente setar o IFS como
> quebra de linha antes de trabalhar com os nomes dos arquivos dentro do
> seu script
>
> IFS="
> "
>
> (vide exemplo em
> http://www.mail-archive.com/address@hidden/msg05769.html)
>
> hasta!
>
> jr.
>
> On 4/4/07, Christian Andreas Miniero Casza 
<address@hidden<xpto%40aunit.com.br>>
> wrote:
> > Maurício,
> >
> > utilize o sed para converter '\ ' em '\\\ ' no nome do arquivo.
> > Seria: sed 's/\ /\\\ /g'.
> >
> > Isso deve resolver seu problema.
>
> >
> > On Wed, 4 Apr 2007 08:13:49 -0300, "Mauricio Vieira" <
> address@hidden <mauricio.vieira%40gmail.com>> wrote:
> > > Olá a todos,
> > >
> > > Fiz um pequeno script para converter arquivos ogg pra mp3 (a partir
> desta
> > > msg, é domínio público).
> > >
> > > #!/bin/sh
> > >
> > > [ -z $1 ] && exit 1
> > >
> > > ARQUIVOOGG=$1
> > > EXTENSION=${ARQUIVOOGG:${#ARQUIVOOGG}-4:4}
> > > #echo $EXTENSION
> > > [ $EXTENSION == '.ogg' ] || exit 1
> > >
> > > ARQUIVOMP3=${ARQUIVOOGG%.ogg}".mp3"
> > > ARQUIVOMP3=${ARQUIVOOGG/ogg/mp3}
> > >
> > > COMANDO="oggdec \"${ARQUIVOOGG}\" -o - | lame - \"${ARQUIVOMP3}\""
> > > echo $COMANDO
> > > $COMANDO
> > >
> > > Acontece que os arquivos mp3 contém espaços no nome.
> > > Um exemplo:
> > >
> > > sh -x ~/bin/ogg2mp3.sh 07\ -\ Once\ Upon\ The\ Sea\ Of\ Blissful\
> > > Awareness.ogg
> > > + '[' -z 07 - Once Upon The Sea Of Blissful Awareness.ogg ']'
> > > /home/vieira/bin/ogg2mp3.sh: line 3: [: too many arguments
> > > + ARQUIVOOGG='07 - Once Upon The Sea Of Blissful Awareness.ogg'
> > > + EXTENSION=.ogg
> > > + '[' .ogg == .ogg ']'
> > > + ARQUIVOMP3='07 - Once Upon The Sea Of Blissful Awareness.mp3'
> > > + ARQUIVOMP3='07 - Once Upon The Sea Of Blissful Awareness.mp3'
> > > + COMANDO='oggdec "07 - Once Upon The Sea Of Blissful Awareness.ogg"
> -o -
> > > |
> > > lame - "07 - Once Upon The Sea Of Blissful Awareness.mp3"'
> > > + echo oggdec '"07' - Once Upon The Sea Of Blissful 'Awareness.ogg"'
> -o -
> > > '|' lame - '"07' - Once Upon The Sea Of Blissful 'Awareness.mp3"'
> > > oggdec "07 - Once Upon The Sea Of Blissful Awareness.ogg" -o - | lame
> -
> > > "07
> > > - Once Upon The Sea Of Blissful Awareness.mp3"
> > > + oggdec '"07' - Once Upon The Sea Of Blissful 'Awareness.ogg"' -o -
> '|'
> > > lame - '"07' - Once Upon The Sea Of Blissful 'Awareness.mp3"'
> > > OggDec 1.0.1
> > > ERROR: Can only specify one input file if output filename is specified
> > >
> > > Se eu pego a saida do meu 'echo' e colo no terminal, ele executa
> > > corretamente. Exemplo:
> > > oggdec "07 - Once Upon The Sea Of Blissful Awareness.ogg" -o - | lame
> -
> > > "07
> > > - Once Upon The Sea Of Blissful Awareness.mp3"
> > >
> > > Só que dentro do script, ele não tá encarando assim. Já tentei
> > > _escapar_ com
> > > aspas, mas não tá funcionando. Alguém quem alguma sugestão?
> > >
> > > agradeço antecipadamente (pra não encher a lista com msgs de
> > > agradecimento)
> > >
> > > --
> > > Mauricio B. C. Vieira
> > > http://mauriciovieira.net
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> > --
> > Christian Andreas Miniero Casza
> > Administrador de Sistemas
> > address@hidden <miniero%40aunit.com.br>
> > address@hidden <xpto%40aunit.com.br>
> > +55 11 8173-7882
> > +55 11 5643 7846
> >
> >
> >
> > ----------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> > ----------------------------------------------------------
> > Sair da lista: address@hidden<shell-script-unsubscribe%40yahoogrupos.com.br>
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
>
>



--
Mauricio B. C. Vieira
http://mauriciovieira.net


[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil


Links do Yahoo! Grupos





reply via email to

[Prev in Thread] Current Thread [Next in Thread]