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

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

Re: [shell-script] Uso de Vari�vel_contendo__espa�o na linha de comando


From: moysespr
Subject: Re: [shell-script] Uso de Variável_contendo__espaço na linha de comando
Date: Wed, 21 Jan 2004 18:18:21 -0800 (PST)

Experimentei:

$ bash --version
GNU bash, version 2.05b.0

$ subcmd="-J subtitler=\"subtitle_file=$basename.ppml color_depth=32\""
$ echo $subcmd
-J subtitler="subtitle_file=.ppml color_depth=32"
Aqui tudo bem!

Como não tenho a sua infra estrutura usei o executável ls:
set -x
$ /sbin/ls $subcmd
+ /usr/bin/ls -J 'subtitler="subtitle_file=.ppml' 'color_depth=32"'
É mesmo, ficou diferente!

LINHA DE COMANDO, agora escrevendo diretamente:
/sbin/ls -J subtitler="subtitle_file=.ppml color_depth=32"
+ /sbin/ls -J 'subtitler=subtitle_file=.ppml color_depth=32'
Opa, agora temos um parâmetro ao invés de dois!

Se assim funciona, parece que o seu executável não precisa das aspas.
Elas seriam para uso do shell.

Mas, se você escrever o comando que tenta montar no script, 
diretamente na linha de comando, funciona corretamente?

Se a resposta for sim, talvez esta alteração resolva:

$ subcmd="subtitler=subtitle_file=$basename.ppml color_depth=32"
+ subcmd=subtitler=subtitle_file=.ppml color_depth=32

$ /sbin/ls -J "$subcmd"
+ /sbin/ls -J 'subtitler=subtitle_file=.ppml color_depth=32'

Veja que agora o resultado foi o mesmo obtido na linha de comando.

A consequência final prática sobre o seu programa, obtida via linha de 
comando, seja ela qual for, deve agora estar sendo reproduzida.

Assim fica até mais conveniente, pois você não repete o -J em cada opção do
case.

Sugiro que pegue a essência, aplique no script, experimente e conte o
resultado.
Assim, se ok, poderemos aplicar no futuo em nossas Infra. :)


--- address@hidden wrote:
> On Wed, Jan 21, 2004 at 05:25:19PM -0200, Geison Farias wrote:
> > 
> > faça o seguinte teste
> > 
> > [geison@eletro geison]$ TESTE="oi meu nome eh \"Geison\" "
> > [geison@eletro geison]$ echo $TESTE
> > oi meu nome eh "Geison"
> > 
> > At 17:18 21/1/2004 -0200, you wrote:
> > >
> > >Estou escrevendo um script para o bash onde faço:
> > >
> > >Em um script bash preciso executar um comando da forma:
> > >
> > >$ transcode ... -J subtitler="subtitle_file=$f.ppml color_depth=32" ...
> > >                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > >
> > >Porém a opção '-J' juntamente ao seu argumento não deve
> > >ser escrita diretamente na chamada do comando 'transcode',
> > >porém deve estar definida numa variável 'sub'
> > >
> > >sub="-J subtitler=subtitle_file=$f.ppml color_depth=32"
> > >                  ^                                  ^
> > >                  |                                  |
> > >
> > >Problema: como colocar as aspas nos pontos indicados de
> > >tal forma que o comando
> > >
> > >$ transcode ... $sub ...
> > >
> > >seja equivalente ao primeiro comando citado acima?
> 
> Não funciona colocando o esacpe seguido de aspas.
> 
> Trecho do meu script:
> 
>     [...]
>     local subcmd=""
>     case "subtitler" in
>       subtitler)
>       subcmd="-J subtitler=\"subtitle_file=$basename.ppml color_depth=32\""
>       ;;
>       extsub)
>       subcmd="-J extsub=$sid:60:-400:0:0:0:0:1:2"
>       ;;
>     esac
> 
>     transcode -i $inputname $sample -y mpeg2enc,null \
>       $resize \
>       -V --export_asr $aspect \
>       -F "5,-s -B $nonvideobitrate -V 230 -S $cdmaxsize -4 2 -2 1 $vquality" \
>       -w $vbitrate \
>       $subcmd $soundcmd \
>       -o $name.$tag
>     [...]
> 
> Ao executar eu tenho o seguinte log:
> 
> + local subcmd=
> + subcmd=-J subtitler="subtitle_file=matrix.reloaded.ppml color_depth=32"
> + transcode -i matrix.reloaded.avi -c 0-2400 -y mpeg2enc,null --export_prof
> svcd -V --export_asr 2 -F '5,-s -B 286 -V 230 -S 800 -4 2 -2 1 -q 5 -K hi-res
> -R 0 -E -5' -w 2900 -J 'subtitler="subtitle_file=matrix.reloaded.ppml'
> 'color_depth=32"' -o matrix.reloaded.sample
> transcode v0.6.12 (C) 2001-2003 Thomas Oestreich, 2003-2004 T. Bitterberg
> [transcode] warning : unused command line parameter detected (20/21)
> [transcode] warning : argc[20]=color_depth=32" (unused)
> 
> Observe como a variável está sendo expandida:
> 
>   -J 'subtitler="subtitle_file=matrix.reloaded.ppml' 'color_depth=32"'
> 
> Alguma dica?
> 


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free web site building tool. Try it!
http://webhosting.yahoo.com/ps/sb/


reply via email to

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