msoliver
(usa Debian)
Enviado em 30/06/2016 - 18:08h
Orra_ibrahim escreveu:
Senhores , estou desenvolvendo um script shell com ajuda do forum porem surgiu uma duvida e nao consigo realizar validação do diretorio nem q a "porra", preciso de um IF (caso tenha arquivo no diretorio execute algo ) Else (só escreva algo )
é um While infinito que fica realizando validação da dos arquivos existentes no diretorio.
ME AJUDEM GALERA, NAO CONHEÇO MTO DE SHELL
-----------------------------------------------------------------------------------
Boa noite ibrahim.
Veja se é +- isso que precisa:
#INICIO
#!/bin/bash
################################
## MONITORA CONTEúDO De $DIR ##
## V:00 Junho/2016 ##
## Marcelo Oliver ##
## marceloliver[@]gmail[Dot]com ##
################################
DIRC="$PWD" export DIRC
ARQ01=$DIRC/LS-TXT.temp
AGR=$(date +"%Y/%m/%d")
DIR="$HOME"
COLS=$(tput cols)
DATA="date +"%H:%M:%S:%N""
SED="sed -r "s/.{6}$//""
SLEEP="sleep 600"
VERIFICA() {
VARREDIR
if [ -s "$ARQ01" ];then
printf "\n $(LINHA) \n $AGR - $($DATA|$SED)\n MONITORAMENTO do DIRETóRIO:\n $DIR\n $(LINHA)\n"
GETLINE
else
printf "\n $(LINHA) $AGR - $($DATA|$SED)\n NÃO Há ARQUIVOS EM:\n $DIR\n $(LINHA)\n"
sleep 1 ; VERIFICA
fi
}
VARREDIR() { ls -lR "$DIR" | grep '^-' > $ARQ01 ; }
GETLINE() {
TM1=$($DATA|$SED) ; VARREDIR
NR01=$(awk -F"\n" 'END {print NR}' $ARQ01)
$SLEEP
TM2=$($DATA|$SED) ; VARREDIR
NR02=$(awk -F"\n" 'END {print NR}' $ARQ01)
COMPARA
echo -e " $(LINHA)\n"
}
COMPARA(){
printf "\n $(LINHA)\n $AGR - $($DATA|$SED)\n TM1:$TM1 TM2:$TM2\n Arqs:$NR01 \t Arqs:$NR02"
if (($NR02==$NR01));then
printf "\n NãO HOUVE ALTERAÇãO EM $DIR"
else
printf "\n OCORRERAM ALTERAÇõES EM $DIR"
fi
sleep 1
VARREDIR;GETLINE
}
LINHA() { printf '%*s' "$((COLS/2))" '' | sed "s/ /*/g" ;echo; }
VERIFICA
#FIM
SAíDA :
****************************************
2016/06/30 - 15:09:52:191
MONITORAMENTO do DIRETóRIO:
/home/user
****************************************
****************************************
2016/06/30 - 15:09:58:219
TM1:15:09:52:195 TM2:15:09:58:205
Arqs:27 Arqs:28
OCORRERAM ALTERAÇõES EM /home/user
****************************************
2016/06/30 - 15:10:05:254
TM1:15:09:59:238 TM2:15:10:05:244
Arqs:28 Arqs:28
NãO HOUVE ALTERAÇãO EM /home/user
****************************************
****************************************
2016/06/30 - 15:10:12:295
TM1:15:10:06:267 TM2:15:10:12:284
Arqs:28 Arqs:29
OCORRERAM ALTERAÇõES EM /home/user
. . .
Para testar, "rodei" o comando abaixo em outro terminal:
for ((N=0;N<100;N++));do sleep 15;touch FILE_$N.txt;done
E tirei os "0" de SLEEP="sleep 600"
Funcionou como esperado.
É isso, espero que ajude....
E não esqueça . . .
:)
---------------------------------------------------------------------------------
Se a resposta foi satisfatória e resolveu seu problema, marque-a como a MELHOR, dessa forma, ganho uns pontinhos,
o que incentiva a continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)
---------------------------------------------------------------------------------
Abç.:
Marcelo Oliver