Newsgroup: it.comp.os.linux.development
Titolo: bash scripting

Ciao a Tutti. Qualche settimana fa avevo chiesto aiuto per riuscire a
catturare delle informazioni da una lista di files e mi aveva suggerito la
soluzione Antonio 6sette:
#!/bin/bash
A=20080510
B=20080603
for FLE in `ls /dir/*.txt`; do
  TMP=${FLE//*_/}
  DATA=${TMP//.txt/}
  WW=$(($DATA-$A))
    if [ $WW -gt 0 ]; then
       # uso grep
       #
    fi
done
I files riportano la data nel nome e la ricerca la faccio in un intervallo
temporale grazie alle variabili A e B.
Adesso, trovata nel file X l'informazione di mio interesse, vorrei leggere
il contenuto del file (e catturarne il nome) appena successivo ad X,
secondo l'ordine contenuto nella variabile $FLE. Qualche suggerimento? 
Ciao e grazie
               tonyda
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 secondo l'ordine contenuto nella variabile $FLE. Qualche suggerimento? 
non ho capito, se nel file pippo_20080520.txt c'è l'informazine che ti
serve, allora vuoi sapere nome e contenuto del file pippo_20080521.txt ?

 serve, allora vuoi sapere nome e contenuto del file pippo_20080521.txt ?
dopo il file pippo_20080520.txt (nel quale è stata trovata l'informazione)
il ciclo di for passerà ad esaminare il successivo file in lista, di cui
non conosco esattamente il nome, potrà essere un pippo_20080521.txt o un
pippo_20080522.txt, ecc.. Bene! Di questo file vorrei catturarne il nome e
farci un grep dentro.
Più chiaramente: se ho catturato l'informazione "processo X = OFF" nel
file pippo_20080520.txt, voglio sapere in che data è tornato ON, e la data
posso estrarla solo dal nome del file.
Grazie x aver preso in considerazione il mio post.
Ciao


 posso estrarla solo dal nome del file.
capito, quindi non ti interessa il file subito dopo, ma trovare "tra tutti
i file dopo" quello con una data informazione.
riprendendo il codice (scrivo in pseudocodifica, poi aggiusta te)
#!/bin/bash
A=20080510
B=20080603
flag=0 #resta a zero finqundo non trovo off
for FLE in `ls /dir/*.txt`; do
  TMP=${FLE//*_/}
  DATA=${TMP//.txt/}
  if flag==1 #hai trovato OFF, da adesso si cerca ON
      #quando greppi ON => poni flag=2 e dai break
  else		
	WW=$(($DATA-$A))
    	if [ $WW -gt 0 ]; then
       	   # uso grep
           #quando greppi OFF poni flag = 1
		e DATAOFF=DATA
         fi
  fi
done
if flag = 0:
	non c'è mai stato un OFF
else if flag = 1 
	c'è stato un OFF in data DATAOFF ma mai un on successivo
else if flag = 2
	c'è stato un OFF in data DATAOFF ed  il successivo ON in DATA
fi

 fi
Ho provato ed il tuo metodo funziona, ma trova una sola ricorrenza OFF-ON.
Se nell'intervallo di tempo determinato dalle variabili A e B si sono
verificati piů cambi di stato, non mi vengono segnalati tutti. Per la
precisione viene segnalato solo l'ultima ricorrenza di ON/OFF verificatasi.
Mi sfugge la soluzione x ottenere tutti i cambi di stato.
Ciao
   Tony




eh, perchč quello avevi chiesto
se le vuoi intercettare tutte ,cambi il blocco centrale cosě:
   if flag==1 #hai trovato OFF, da adesso si cerca ON
       #quando greppi ON => 
	fai tornare flag a 0
	echo "OFF in data $DATAOFF - Successivo ON in data $DATA"
	DATAOFF=""
	ed invece di uscire con break continui sugli altri file con continue
in ogni caso, piu' che bash, queste sono le basi della programmazione
strutturata, dovresti studiartele

 strutturata, dovresti studiartele
Consigliami qualcosa da leggere!
