removido
(usa Nenhuma)
Enviado em 14/10/2005 - 14:04h
Essa técnica :
mount -t smbfs -o username=user,password=senha //ip_maquina/dir /mnt/dir
var=$?
echo $var # Status da operação anterior
é válida para qualquer comando.
sabe quando fazemos algo como
cd ~/backup && cp ~/.bashrc ./bashrc
seria o mesmo que fazer
cd ~/backup
STAT=$?
if [ $? == 0 ]; then
cp ~/.bashrc ./bashrc
exit 0
else
echo "Não consegui entrar em ~/backup"
exit 1
fi
Isso reflete em uma "boa educação" : usar exit 0 para quando o script termina certinho e exit 1 para quando ele termina com erro.
Assim, se alguém for fazer alguma coisa do tipo
./meu_script && echo "terminamos" || echo "erro"
as respostas vão estar correlacionadas com a realidade e não com o acaso.
Observe no meu exemplo, se tivessemos feito apenas :
#!/bin/bash
cd ~/backup
cp ~/.bashrc ./bashrc
e depois fizemos uma chamada de status do script ele SEMPRE terminaria ok, por que ? Porque mesmo que ele não entre no diretório ~/backup ele ainda seria capaz de fazer a cópia pedida... é claro que esse exemplo é besta, mas é bem educativo. Devemos sempre nos policiar para colocar exit com status, assim teremos sempre a certeza de que tipo de finalização teremos...
também vale quando não colocamos, pois nesse caso, queremos que o STATUS seja sempre o status do último comando, mesmo que os anteriores não tenham sido bem sucedidos, exemplo onde isso é verdade :
#!/bin/bash
cp ~/.bashrc ~/backup/bashrc
Não é necessário dizer o status, afinal o status do script, é o status do último comando, como temos apenas um comando não é necessário colocar o exit 1 ou exit 0, ainda sim, colocaríamos algo como :
#!/bin/bash
cp ~/.bashrc ~/backup/bashrc
STAT=$?
[ $? == 0 ] && { exit 0; } || { exit 1; }
ou então :
#!/bin/bash
cp ~/.bashrc ~/backup/bashrc
exit $?
Dizem os especialista que é sempre recomendado validar o status, mas eu mesmo não sou um bom exemplo...