+ Responder ao Tópico



  1. #1
    errado
    Visitante

    Padrão [RESOLVIDO] Problemas com o Bash

    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. #2

    Padrão [RESOLVIDO] Problemas com o Bash

    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
    Visitante

    Padrão [RESOLVIDO] Problemas com o Bash

    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: