Se faço echo $file, são listados corretamente todos os arquivos existentes no diretório.

Mas se faço echo "$file.mp3", então, obtenho "/tmp/audioshelf/*.mp3". Este é um resultado estranho porque, em lugar de *, esperava encontrar o nome do arquivo. E se a cada iteração o lame encontra * em lugar do arquivo, não se admira que nada tenha conseguido converter.

então, se faço: "open" ou "create", as funções são processadas normalmente. Se faço "converte", obtenho um erro na linha do lame porque a cada iteração ele parece não processar adequadamente. E quando faço "close", ele novamente não me permite apagar os arquivos do diretório e, como resultado, quando se deseja apagar o próprio diretório, ele ainda está cheio.

Em suma, parece que o problema encontra-se na concatenação de $tmp_shelf com "/*".

Eis o script com a função close:

#!/bin/bash

#Audioshelf

speed=260
amplitude=140
voice="pt-br"
split=20
quality=128
tmp_shelf="/tmp/audioshelf"

open()
{
mkdir $tmp_shelf
}

create()
{
echo "Criando $1"
espeak -f "./$1" -w "$tmp_shelf/$1" -v $voice -s $speed -a $amplitude --split=$split
}

convert()
{
for track in "$tmp_shelf/*"
do
echo "$track.mp3"
# lame -b 128 $track "$track.mp3"
done

}

close()
{
rm "$tmp_shelf/*"
rmdir $tmp_shelf
}



Em 04-08-2011 23:06, Fabiano Barros escreveu:
tente mudar como abaixo pra vc ver a saida da variavel file.


convert()
{
for file in "$tmp_shelf/*"
do
          echo $file
done

}






2011/8/4 Luciano de Souza<luchya...@gmail.com>

Caros,

Desejo converter um arquivo de texto em audiolivro. Para tanto criei um
shellscript, mas ele dá erro na linha: for file in "$tmp_shelf/*"

#!/bin/bash

#Audioshelf

speed=260
amplitude=140
voice="pt-br"
split=20
quality=128
tmp_shelf="/tmp/audioshelf"

open()
{
mkdir $tmp_shelf
}

create()
{
espeak -f "./$1" -w "$tmp_shelf/$1" -v $voice -s $speed -a $amplitude
--split=$split
}

convert()
{
for file in "$tmp_shelf/*"
do
lame "$file" "$file.mp3" -b $quality
done

}

convert

O que poderia estar errado. Não tenho dúvidas quanto à sintaxe de espeak e
de lame e, de qualquer modo, o Bash diz que o erro encontra-se na linha que
mencionei.

Luciano

--
Mais sobre o Ubuntu em português: 
http://www.ubuntu-br.org/**comece<http://www.ubuntu-br.org/comece>

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/**mailman/listinfo/ubuntu-br<https://lists.ubuntu.com/mailman/listinfo/ubuntu-br>





--
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

Responder a