shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RES: [shell-script] Ainda Arquivos :)


From: Julio Neves
Subject: Re: RES: [shell-script] Ainda Arquivos :)
Date: Mon, 21 May 2001 11:46:00 -0300

Favor responder a address@hidden
Para:   <address@hidden>
cc: 
Assunto:        RES: [shell-script] Ainda Arquivos :)

Caro Júlio,
                 mais uma vez muito obrigado, porém, o
                 [ -s arquivo ]
                 naum funcionou. Depois utilizei o comando test, ficando
                 [`test -s arquivo`]
                 ai sim tudo funcionou! :)

Caro Henrique,
o if no ambiente shell não serve para testar condição como os ifs das 
outras linguagens que vc conhece. O if aqui testa a execução de um 
comando: se o comando foi bem sucedido, ele entra no then, caso contrário 
ele entra no else. Para testar isso faça um bacalho assim:
if ls "$1" > /dev/null 2>&1
then
        echo O Arquivo "$1" existe no diretorio corrente
else
        echo O Arquivo "$1" nao esta definido neste diretorio
fi
Se vc executar este teste passando um arq q existe e reexecutar passando 
um q não existe vc verá que funciona.
Ai vc vai me perguntar: "e como eu testo uma condição?" Ah! para testar 
condição existe o comando test que da mesma forma do ls acima eu uso sem 
crases. Veja só o bacalho número 2:
if test -s "$1"
then
        echo O Arquivo "$1" existe no diretorio corrente e tem dado
else
        echo O Arquivo "$1" nao esta definido neste diretorio ou nao tem 
dado
fi

O Stephen Bourne, quando bolou o bourne-shell (sh) que é a base do ksh e 
do bash, achou pouco "legível" este tipo de construção (if test ...) e 
criou uma construção "sinônoma" a esta, que botar a condição entre 
colchetes, tornando-a um pouco parecida com o if em C. Por ser compatível 
com o sh, te garanto que este tipo de construção funciona. Assim o bacalho 
acima poderia ser construído, melhorando a legibilidade da seguinte forma:
if [ -s "$1" ]
then
        echo O Arquivo "$1" existe no diretorio corrente e tem dado
else
        echo O Arquivo "$1" nao esta definido neste diretorio ou nao tem 
dado
fi
Repare que os colchetes estão separados por espaços em branco (e deve ter 
sido ai q vc errou), sem os quais a instrução daria um erro. 

Em anexo estou mandando uma seção do meu livro que trata sobre o tema. 
Pena que está no formato do M$word :( (exigência do editor) e como todo 
produto da M$ é uma porcaria, qdo fiz o cortar/colar, perdeu um pouco da 
formatação.

[ ]s,
Julio Cezar Neves




Attachment: ParteDoCapitulo4.doc
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]