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: Flavio Junior
Subject: Re: [shell-script] Como tratar arquivo com espaço s no nome, dentro de um script
Date: Wed, 4 Apr 2007 14:05:17 -0300

meus 2 cents...

$ while IFS=$'\n' read -r FILE; do oggdec $FILE -o - | lame -
${FILE/.ogg/.mp3}; done < <(ls -1 *.ogg)

Veja que estou tratando o IFS no while e usando read -r ..

Sorte,

Flavio do Carmo Junior

On 4/4/07, edjunior <address@hidden> wrote:
>
>   tentou utilizando "eval" pra executar o comando?
>
> eval $COMANDO
>
> jr.
>
> On 4/4/07, Mauricio Vieira <address@hidden<mauricio.vieira%40gmail.com>>
> wrote:
> > Oi,
> >
> > Verdade, tou meio enferrujado e nem lembrei do IFS. Mas não tá rolando..
>
> > 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 <edjunior%40gmail.com>> 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>
> <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> <
> 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> <miniero%40aunit.
> com.br>
> > > > address@hidden <xpto%40aunit.com.br> <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>
> <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<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
> >
> >
> >
>  
>


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



reply via email to

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