[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.
[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]
[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: