[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
ParteDoCapitulo4.doc
Description: Binary data