Considerando as funções "open", "create", "convert" e "close", o comportamento que esperava é o seguinte:
1. "open", chamada sem parâmetros, cria no diretório temporário uma pasta em que salvarei os waves produto do comando Espeak. A função funciona. A única mudança que terei de fazer é descobrir como verifico se a pasta já existe, pois neste caso, a função não deve fazer nada. 2. "Create", é chamada com um parâmetro, o nome de um arquivo de texto em que tenho o livro. então, faço chamadas como: create "Um gosto e seis vinténs" create "Crime e castigo" create "As vinhas da ira" "Create" utiliza as variáveis colocadas no cabeçalho do script. Aqui também não observo nenhum erro. A pasta, criada por "open", foi abastecida por "create". Lá encontro as faixas do livro em formato wave. 3. "convert", chamada sem parâmetros, tem a função de converter os arquivos waves, que não possuem extensão "wav", para "*.mp3", visto que o meu reprodutor apenas lida com este formato. Eis o ponto em que observo erro. Esperava que, após rodar "convert", na pasta temporária, além dos arquivos wave, sem extensão, tivesse também arquivos "mp3", com a extensão "mp3". A seguir, na mesma pasta do arquivo de texto, fornecido como parâmetro, criaria uma subpasta com o nome do livro e, para lá moveria os arquivos *.mp3 localizados na pasta temporária. Chamaria esta função de "move", mas ainda não há escrevi, posto que observei erro na função "convert". Ocorre que, ao rodar "convert", na pasta temporária, continuo a ter somente os arquivos waves gerados por "create". Então, como "create" possui parâmetro e roda e "convert" não possui parâmetros e falha, julgo que o problema não seja este. 4. "close", sem parâmetros, por fim esvaziaria a pasta temporária e a removeria. Então, depois de declaradas as funções, a chamada poderia ser algo assim: #! /bin/bash # # Aqui declaram-se as variáveis e funções # open create $1 convert close E por fim, o script seria chamado assim: ./audioshelf "Manual de Shellscript" Em 04/08/11, Luciano de Souza<[email protected]> escreveu: > 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 > -- Luciano de Souza -- 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

