alexandregms
(usa Ubuntu)
Enviado em 31/01/2011 - 12:21h
Pessoal, to precisando criar uma condição desta forma:
1) faço um for em um determinado diretorio para me listar apenas arquivos com extensões *.abc
2) este for gerará uma lista com inumeros arquivos com esta extensao, porem quero apenas um arquivo especifico, por exemplo:
# loop para me listar apenas os arquivos com extensão "*.def" e em seguida excluo o a extensão
for files in $(cd $MEU_DIR/abc/ && ls *.def 2> /dev/null | cut -d"." -f1)
do
# condição para verificar se os arquivos listados no loop é igual ao meu arquivo contido na variável $MINHA_APLICACAO
if [ "$files" == "$MINHA_APLICACAO" ]
then
# verifico se a aplicação contida na variável $MINHA_APLICACAO está executando
STATUS_ABC=`ps ax | grep $MINHA_APLICACAO | grep -v grep | grep -v $0 | awk '{print $1}'`
# se a aplicação existir, ou seja, se for listada no loop acima e for igual a minha variável $MINHA_APLICACAO exibe a mensagem abaixo
if [ -n "$STATUS_ABC" ]
then
echo "APLICACAO EXISTE, E ESTA EM EXECUCAO"
exit 0
# se a aplicação não existir, ela chama uma função para disparar a mesma
else
INICIAR_APLICACAO
fi
done
Agora, minha pergunta é: se a aplicação não existir, ou seja, se o arquivo que desejo, neste caso o $MINHA_APLICACAO, não for listado
em $files, como faço para finalizar o loop e me retornar e retornar apenas uma mensagem dizendo que a mesma não existe.
A forma que tentei foi:
if [ "$files" == "$MINHA_APLICACAO" ]
then
STATUS_ABC=`ps ax | grep $MINHA_APLICACAO | grep -v grep | grep -v $0 | awk '{print $1}'`
if [ -n "$STATUS_ABC" ]
then
echo "APLICACAO EXISTE, E ESTA EM EXECUCAO"
exit 0
elif [ ! -n "$STATUS_ABC" ]
then
INICIAR_APLICACAO
else
echo "APLICACAO NAO ENCONTRADA"
fi
fi
Porém, neste caso acima, se 50 arquivos são listados, ele retornará a mensagem "APLICACAO NAO ENCONTRADA", 50 vezes, sendo que só quero
receber a mensagem apenas uma vez! Ou seja, centenas de arquivos passarão por este loop, mas se o dito cujo não existir, ele me retorna
apenas uma mensagem "APLICACAO NAO ENCONTRADA".
Espero que entenderam minha dúvida..se não ficou claro podem perguntar que tento explicar novamente...
Valeu ninjas de plantão!