+ Responder ao Tópico



  1. #1

    Padrão Erro ao verificando arquivo vazio [RESOLVIDO]

    Amigos, estou precisando verificar em um certo momento de meu script se o arquivo está vázio, se estiver para tudo, senão manda bala.

    Mas veja o que acontece quando tento de todas as maneiras ver isso:

    Vendo via TEST
    Código :
    root@www:/tmp# touch terra
    root@www:/tmp# test -z terra
    root@www:/tmp# echo $?
    1
    root@www:/tmp# echo conteudonoarquivo>terra
    root@www:/tmp# test -z terra
    root@www:/tmp# echo $?
    1

    Vejam que o arquivo terra estava com tamanho 0 quando efetuo um touch. Mas o resultado de vazio e cheio é o mesmo.


    Veja agora usando o IF (que no meu caso irei usar ele).
    Código :
    root@www:/tmp# touch terra
    root@www:/tmp# if [ -z terra ] ; then
    > echo SINALdeVIVO
    > fi
    root@www:/tmp#  echo conteudonoarquivo>terra
    root@www:/tmp#  if [ -z terra ] ; then
    > echo SINALdeVIVO
    > fi
    root@www:/tmp#

    E com a opcao -N que é antonimo da -Z, vejam o resultado:

    Código :
    root@www:/tmp# touch terra
    root@www:/tmp# if [ -n terra ] ; then echo SINALdeVIVO; fi
    SINALdeVIVO
    root@www:/tmp# echo conteudonoarquivo>terra
    root@www:/tmp# if [ -n terra ] ; then echo SINALdeVIVO; fi
    SINALdeVIVO
    root@www:/tmp#

    Isso é palhaçada do meu S.O. ou será que essa verificação não é a que realmente estou procurando.?
    Última edição por terra_jr; 25-04-2007 às 09:58. Razão: Consegui resolver o problema

  2. #2

    Talking

    O operador -z verifica se uma string tem tamanho zero.
    O operador -n verifica se a string tem tamanho diferente de zero.

    Por isso, quando eu realizo o teste:

    -z terra

    ele retorana falso (1) - a string "terra" tem comprimento diferente de zero, e quando eu faço o teste:

    -n terra

    ele retorna verdadeiro. Ou seja, eu estou testando o nome dos arquivos, e não os seus conteúdos.


    Resolução:

    A opção -s verifica se o arquivo é maior que 0 (zero).

    Valeu amigos.