Quoted by a box full of trained worms
For `ADRIANO BRAND <[EMAIL PROTECTED]>' 
On Thursday, 26 June 2003 (12:58):

>
>  fiz um pequeno script com o dialog, para gerar disketes 
> a partit de uma imagem usando o DD.
>  O Problema é que dando certo ou não, ele retorna que o disco
> foi gerado com sucesso.
>  como eu faço para retornar uma mensagem de erro se o 
> disco não funcionar?
> 

        Qual método está usando para verificar se o dd obteve sucesso ou não?
Verificando a variável ``$?'' logo após sua execução? Bem, se não estou
enganado, o dd sempre vai retornar 0 (sem erros), mesmo se não conseguiu copiar
tudo. Você pode, entretanto, fazer algo do tipo:

        dd if=arquivo.img of=/dev/fd0 2> /dev/stdout | grep "failed" -v

        Eu não me lembro o que o dd joga no terminal quando há alguma falha, 
você teria
que experimentar isso e trocar o "failed" pelo que for mais apropriado.

        Como o grep foi o último comando a ser executado, a variável ``$?'' será
atribuída a seu nível de erro. Portanto, se essa variável valer 1, é que houve
algum erro durante a geração do arquivo, e 0, se tudo ocorreu com sucesso.

        Sobre a linha de comando, se você (ou algum outro leitor desta lista) 
não
souber o significado do ``2>'': isso significa que você estará redirecionando o
arquivo de número dois (saida padrão para erros, ou stderr) para algum outro
lugar, no caso, o stdout (ou saída padrão de texto).

        Isso é feito pois não é possível fazer um pipe ("|") direto que consiga 
ler do
stderr -- é proposital e muito útil; você pode estar usando um programa que
processa algum dado e o jogue no stdout (e este você joga num arquivo em disco),
e os erros ou avisos, que não seriam importantes neste arquivo, são enviados
apenas para o seu terminal.

        No seu caso, como temos que analisar os erros com o ``grep'', 
redirecionamos o
stderr para stdout.


        Espero ter ajudado!


        Ah, só uma sugestão: não mude a caixa de nome de comandos, isto é, não 
troque
minúsculas por maiúsculas, pois, como você sabe, *nix é SenSíVeL à VaRiaÇõEs dE
CaiXA, e isso pode causar alguma confusão. Se quiser realçar alguma coisa,
coloque-a entre aspas.

-- 

 Leandro Pereira              (oO)           <[EMAIL PROTECTED]>
                              /||\                  www.mindcrisis.tk

     "Alguns homens vêem as coisas como são, e dizem 'Por quê?'
    Eu sonho com as coisas que nunca foram e digo 'Por que não?'"
                        --George Bernard Shaw

Responder a