+ Responder ao Tópico



  1. #1
    errado
    Olá!

    O bash não suporta passagem de "parâmetros complexos"? Ou é necessário alguma gambiarra para que funcione?

    Vamos a um exemplo simples:

    Código :
    musik="-a $ART \"`sed -n 1p $o_file`\""
    id3v2 $musik

    O programa id3v2 acusa não achar o arquivo que, no caso, seria a primeira linha do arquivo $o_file. Acontece que em:

    Código :
    musik="-a $ART \"`sed -n 1p $o_file`\""
    echo id3v2 $musik

    Se eu digitar a saída desse script, o comando funciona normalmente.

    O script que constatei o erro é o seguinte:

    Código :
    #!/bin/bash
     
    DIR=/mnt/audio
    o_file=/home/caio/id3.txt
    ART="$1"
    ERE=$PWD
     
    cd $DIR
    ls $ART* > $o_file
     
    linhas=`wc -l $o_file | awk '{ print $1 }'`
    num=1
     
    while [ "$num" -le "$linhas" ]
    do
    	comm=$num"p"
    	musik="-a $ART \"`sed -n $comm $o_file`\""
    	echo id3v2 $musik
    	num=`expr $num + 1`
    done
     
    cd $ERE

    Está bem simples e não-polido, não critiquem meu scripting =]

    Usando-o:
    Código :
    $ sh id3edit.sh Gram
    Coudn't stat file file '"Gram'

    A possibilidade de ser erro do programa é descartada, pois, como dito, o uso de
    Código :
    id3v2 -a Gram "Musica-Do-Gram.mp3"
    funciona normalmente.

    Enfim, alguém sabe se esse é o funcionamento normal do bash (b0000rked) e/ou se tem como contornar isso?

    PS> Depois devo escrever o script em Python, aí confirmo se é, de fato, característico (?) do bash.

  2. O problema ai é que as aspas tão entrando como parte da variavel musik :P

    Para funcionar elas tem que entrarem como delimitador, e não parte da variavel, por isso que o aplicativo vai tratar o arquivo como se a primeira aspa fosse parte do nome do arquivo. Ai tu entra com as aspas fora da variavel para esse caso....

    Muda esse trexo:
    Código :
    musik="-a $ART \"`sed -n $comm $o_file`\""
    id3v2 $musik
    num=`expr $num + 1`

    Para:
    Código :
    musik="`sed -n $comm $o_file`"
    id3v2 -a $ART "$musik"
    num=`expr $num + 1`

    Isso irá funcionar :P :P :P[/quote]



  3. #3
    errado
    Nossa, quem simples! hehehe

    Como é um script, toda a linha é executada e só depois as variáveis são trocadas. :P Eu estava pensando que era feita a "leitura" das variáveis e só depois a linha era "usada" (como num binário).

    Muito obrigado! :good:






Tópicos Similares

  1. Resolvido problemas com módulos no kernel 2.6
    Por estanisgeyer no fórum Servidores de Rede
    Respostas: 7
    Último Post: 20-04-2006, 00:51
  2. problemas com o bind??? (resolvido)
    Por jrctec no fórum Servidores de Rede
    Respostas: 3
    Último Post: 01-06-2005, 15:58
  3. Problemas com o bash dos usuários
    Por Daniels no fórum Servidores de Rede
    Respostas: 12
    Último Post: 01-09-2004, 22:56
  4. Problemas com configuração de Prompt do bash
    Por fdotta no fórum Linguagens de Programação
    Respostas: 11
    Último Post: 01-09-2004, 12:18
  5. problemas com o Shell Script (bash)
    Por RafaelWood no fórum Linguagens de Programação
    Respostas: 4
    Último Post: 19-09-2003, 10:21

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L