verificar existencia de arquivos

1. verificar existencia de arquivos

Jonathan Fernando Filman
filman

(usa Outra)

Enviado em 22/06/2011 - 15:51h

Olá pessoal, sou novo aqui no forum e gostaria da ajuda de vocês

Tenho um script que deveria verificar a existencia de dois arquivos e compara-los

1 - verificar existencia dos arquivos.
2 - se os dois existirem atribui um valor para a variavel
3 - se existir um só verifica qual e atribui um valor para variavel

Se abaixo o meu script:

#!/bin/ksh
#
#---------------------------------------------------------
# SCRIPT PARA DESCOMPACTAR OS ARQUIVOS (F999 E G999)
# AUTOR: JONATHAN FERNANDO FILMAN - DATA: 21/03/2011
# ATUALIZADO EM: 21/06/2011
#----------------------------------------------------------
#
Movt=$1
rms_dbw=/home
Data=`date '+%d-%m-%y'`
Hora=`date '+%H:%M'`
FGMsg1="Arquivos inexistente para descompactacao ${Data} - ${Hora} ."
FGMsg2="Descompactacao realizada com sucesso. ${Data} - ${Hora} ."
FGMsg3="Arquivo ->F999${Movt}.Z<- inexistente para descompactacao ${Data} - ${Hora} ."
FGMsg4="Arquivo ->G999${Movt}.Z<- inexistente para descompactacao ${Data} - ${Hora} ."
FGMsg5="Arquivo ->F999${Movt}.Z<- existente para descompactacao ${Data} - ${Hora} ."
FGMsg6="Arquivo ->G999${Movt}.Z<- existente para descompactacao ${Data} - ${Hora} ."
FGMsg7="Descompactacao cancelada pelo usuario. ${Data} - ${Hora} ."
FGMsg8="Descompactacao descontinuada. Falta de parametros. ${Data} - ${Hora} ."
Log_ImpCar="/home/jonathan/impcar_fg.log"
#
#
#---------------------------------
# Confirma a existencia do LOG
#---------------------------------
#
#
if [ -f $Log_ImpCar ]; then
echo "\n-------------------------------------------------------------------------------" >> $Log_ImpCar
echo "INICIALIZANDO SCRIPT IMPCAR" >> $Log_ImpCar
else
echo "INICIALIZANDO SCRIPT IMPCAR" >> $Log_ImpCar
fi
#
#
#---------------------------------
# Confirma a existencia dos dados
#---------------------------------
#
if (($# != 1)) then
tput sgr 0
tput cup 4 0
echo "\n\n"
echo " ===================================================\n"
echo " PROCESSO DE IMPRESSAO FOI DESCONTINUADO\n"
echo " ==================================================="
echo " Falta de parametros, data nao informada !\n\n"
echo " informacao de DATA..: para descompactacao do F e G!\n\n"
echo " Tecle [ENTER] para continuar\c"
echo ${FGMsg8} >> $Log_ImpCar
read lixo
clear
exit
fi
#
#
#---------------------------------------
# Verificando a existencia dos arquivos
#---------------------------------------
#
#
if [ -e ${rms_dbw}/F999${Movt}.Z ]; then
echo ${FGMsg5} >> $Log_ImpCar
echo ${FGMsg4} >> $Log_ImpCar
Valor=2
echo ${Valor} >> $Log_ImpCar
elif [ -e ${rms_dbw}/G999${Movt}.Z ]; then
echo ${FGMsg6} >> $Log_ImpCar
echo ${FGMsg3} >> $Log_ImpCar
Valor=1
echo ${Valor} >> $Log_ImpCar
elif [ -e ${rms_dbw}/F999${Movt}.Z ]; then
if [ -e ${rms_dbw}/G999${Movt}.Z ]; then
echo "ARQUIVOS PARA DECOMPACTACAO. F999${Movt}.Z e G999${Movt}.Z OK!" >> $Log_ImpCar
Valor=3
echo ${Valor} >> $Log_ImpCar
fi
else
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ====================================================\n"
echo " PROCESSO DE IMPRESSAO FOI DESCONTINUADO\n"
echo " ====================================================\n"
echo " Arquivos F999${Movt}.Z e G999${Movt}.Z inexistentes!\n\n"
echo " TECLE [ENTER] PARA CONTINUAR\c"
echo ${FGMsg1} >> $Log_ImpCar
echo "\n"
read lixo
clear
fi
#
#
#---------------------------------------
# Validando os tipos de descompactacao
#---------------------------------------
#
#
if [ $Valor -eq 3 ]; then
while true
do
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ==========================================\n"
echo " CONFIRMA A DESCOMPACTACAO DOS ARQUIVOS\n"
echo " ==========================================\n"
echo " F999${Movt}.Z e G999${Movt}.Z\n"
echo " Digite [S]im e [N]ao\c"
echo "\n"
read impri
case $impri in
s|S) impri=1;
break;;
n|N) impri=0;
break;;
*) echo "DADOS ERRADOS! INFORME APENAS [S/N]!"
continue;;
esac
done
if [ $impri -eq 0 ]
then
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ==============================================\n"
echo " DESCOMPACTACAO IMTERROMPIDA PELO USUARIO\n"
echo " ==============================================\n"
echo " descompactacao cancelada!\n\n"
echo " TECLE [ENTER] PARA CONTINUAR\c"
echo "\n"
echo ${FGMsg7} >> $Log_ImpCar
read lixo
clear
exit
else
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ===============================================\n"
echo " DESCOMPACTACAO DOS ARQUIVOS INICIADA !!!\n"
echo " ===============================================\n"
echo "\n\n"
echo " Aguarde....."
sleep 1
uncompress ${rms_dbw}/F999${Movt}.Z
uncompress ${rms_dbw}/G999${Movt}.Z
echo ${FGMsg2} >> $Log_ImpCar
echo "\n"
fi
elif [ $Valor -eq 2 ]; then
while true
do
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ==========================================\n"
echo " CONFIRMA A DESCOMPACTACAO DO ARQUIVO\n"
echo " ==========================================\n"
echo " F999${Movt}.Z\n"
echo " Digite [S]im e [N]ao\c"
echo "\n"
read impri
case $impri in
s|S) impri=1;
break;;
n|N) impri=0;
break;;
*) echo "DADOS ERRADOS! INFORME APENAS [S/N]!"
continue;;
esac
done
if [ $impri -eq 0 ]
then
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ==============================================\n"
echo " DESCOMPACTACAO IMTERROMPIDA PELO USUARIO\n"
echo " ==============================================\n"
echo " descompactacao cancelada!\n\n"
echo " TECLE [ENTER] PARA CONTINUAR\c"
echo "\n"
echo ${FGMsg7} >> $Log_ImpCar
read lixo
clear
exit
else
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ===============================================\n"
echo " DESCOMPACTACAO DO ARQUIVO INICIADA !!!\n"
echo " ===============================================\n"
echo "\n\n"
echo " Aguarde....."
sleep 1
uncompress ${rms_dbw}/F999${Movt}.Z
echo ${FGMsg2} >> $Log_ImpCar
echo "\n"
fi
elif [ $Valor -eq 1 ]; then
while true
do
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ==========================================\n"
echo " CONFIRMA A DESCOMPACTACAO DO ARQUIVO\n"
echo " ==========================================\n"
echo " G999${Movt}.Z\n"
echo " Digite [S]im e [N]ao\c"
echo "\n"
read impri
case $impri in
s|S) impri=1;
break;;
n|N) impri=0;
break;;
*) echo "DADOS ERRADOS! INFORME APENAS [S/N]!"
continue;;
esac
done
if [ $impri -eq 0 ]
then
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ==============================================\n"
echo " DESCOMPACTACAO IMTERROMPIDA PELO USUARIO\n"
echo " ==============================================\n"
echo " Descompactacao cancelada!\n\n"
echo " TECLE [ENTER] PARA CONTINUAR\c"
echo "\n"
echo ${FGMsg7} >> $Log_ImpCar
read lixo
clear
exit
else
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ===============================================\n"
echo " DESCOMPACTACAO DO ARQUIVO INICIADA !!!\n"
echo " ===============================================\n"
echo "\n\n"
echo " Aguarde....."
sleep 1
uncompress ${rms_dbw}/G999${Movt}.Z
echo ${FGMsg2} >> $Log_ImpCar
echo "\n"
fi
fi
#
#
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ===============================================\n"
echo " FIM DA EXECUCAO\n"
echo " ===============================================\n"
echo " TECLE [ENTER] PARA SAIR\c"
echo "\n"
read lixo
clear
exit


O erro que esta dando é que? o procedimento esta passando somente no entrada do IF o resto não esta fazendo nada.

O que devo fazer?


Obrigado


  


2. Re: verificar existencia de arquivos

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 22/06/2011 - 16:12h

Experimenta debugar o teu script!

$ ksh -x script

Pra ver o que pode estar acontecendo.


3. Re: verificar existencia de arquivos

Jonathan Fernando Filman
filman

(usa Outra)

Enviado em 22/06/2011 - 17:22h

Colega não deu certo. Fiz o que orientou mais ele roda no mesmo modo que o normal


Os arquivos existe mais esta passando somente no parametro abaixo:
<!--
if [ -e ${rms_dbw}/F999${Movt}.Z ]; then
echo ${FGMsg5} >> $Log_ImpCar
echo ${FGMsg4} >> $Log_ImpCar
Valor=2
echo ${Valor} >> $Log_ImpCar
-->

Obrigado Pela ajuda.



4. Re: verificar existencia de arquivos

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 25/06/2011 - 10:07h

Cara, posso estar viajando, mas me parece que o problema está na lógica mesmo, o ELIF é parte do seu primeiro IF e caso este seja satisfeito ele não tenta nenhuma outra opção até o FI, isso quer dizer que você deve começar da opção mais abrangente para menos abrangente e não o inverso.

Tentando me explicar melhor, o correto é:

Se arquivo 1 e arquivo 2 existirem faça isso...
Senão ... Se arquivo 1 existir faça isso ...
Senão ... Se arquivo 2 existir faça isso
Senão faça isso...


Pensando no seu script, pegando só sua primeira sequencia, o correto seria:

if [ -e ${rms_dbw}/F999${Movt}.Z -a -e ${rms_dbw}/G999${Movt}.Z ]; then
echo "ARQUIVOS PARA DECOMPACTACAO. F999${Movt}.Z e G999${Movt}.Z OK!" >> $Log_ImpCar
Valor=3
echo ${Valor} >> $Log_ImpCar
elif [ -e ${rms_dbw}/F999${Movt}.Z ]; then
echo ${FGMsg5} >> $Log_ImpCar
echo ${FGMsg4} >> $Log_ImpCar
Valor=2
echo ${Valor} >> $Log_ImpCar
elif [ -e ${rms_dbw}/G999${Movt}.Z ]; then
echo ${FGMsg6} >> $Log_ImpCar
echo ${FGMsg3} >> $Log_ImpCar
Valor=1
echo ${Valor} >> $Log_ImpCar
else
clear
tput sgr 0
tput cup 5 0
echo "\n\n"
echo " ====================================================\n"
echo " PROCESSO DE IMPRESSAO FOI DESCONTINUADO\n"
echo " ====================================================\n"
echo " Arquivos F999${Movt}.Z e G999${Movt}.Z inexistentes!\n\n"
echo " TECLE [ENTER] PARA CONTINUAR\c"
echo ${FGMsg1} >> $Log_ImpCar
echo "\n"
read lixo
clear
fi



5. Re: verificar existencia de arquivos

Caio Ribeiro Cesar
ccesar2

(usa Outra)

Enviado em 01/07/2011 - 08:21h

Dá uma olhada nessa ferramenta, já usei bastante e é excelente.

http://sourceforge.net/projects/tripwire/

E é open, se te interessar pode copiar alguns códigos se quiser customizar. Ela é bem completa.

At.

Caio Ribeiro César






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts