Linuxtrent: Re: Primo script....

  • From: Matteo Ianeselli <m.ianeselli@xxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 18 Nov 2001 21:18:17 +0100

Mirco Vivaldi writes:

 > 
 > lo sapevo... il mio problema e' che sono abbastanza ignorante (ho
 > fatto questo script manuale alla mano)

Euhhh... e chi non lo e` stato? Mica si nasce "imparati" :-)

 > l'unico casino che ho a volte e':
 > facendo
 > 
 > mdsum=$(md5sum "$filecondirectory")
 > 
 > alcune volte mi da problemi (md5sum: ./directory/file non trovato)
 > ma non sempre perche'??

Sicuro che il file esista? Non e` che stai considerando anche dei link
simbolici "orfani"?


 > altro problema e' che lo script cosi come ho fatto (per adesso) si
 > divide in 2 script che lasciano in giro una marea di file
 > temporanei (ma non so come fare altrimenti!) 


Se devi fare un file temporaneo, usa mktemp. I.e.  

  TEMP_FILE="$(mktemp /tmp/$0.XXXXXX)"

  echo "Qualcosa" >> $TEMP_FILE

  ...

  rm -f "$TEMP_FILE"

 > adesso daro' un
 > occhiata ad awk e vedo se mi puo essere utile...

Sicuramente vale la pena di darci un'occhiata: per macinare testo non
e` affatto male, se uno non ha il Perl sottomano. 

L'idea di fondo di awk e` l'avere una serie di regole da eseguire se
si verifica una certa condizione. Tipicamente si tratta di un qualcosa del tipo

/espressione regolare/ { comandi }
/espressione regolare/ { comandi }
/espressione regolare/ { comandi }
...

Per ogni riga letta dal file di input vengono valutate le condizioni a
sinistra (se ci sono), e per quelle che corrispondono vengono eseguiti
i comandi a destra.

Tipicamente le condizioni sono espressioni regolari racchiuse tra
barre oblique, ma possono essere anche espressioni del tipo
``if(a==12)'' o cose del genere. 

Esistono condizioni particolari (BEGIN e END) che vengono valutate una
sola volta all'inizio e alla fine.

Una condizione vuota e` vera per tutte le righe.

Per cui, ad esempio

  BEGIN { i=0 }
  
        { i=i+1 }
  
  END   { print i }

conta le righe in un file, e scrive il totale. Nota che in realta` il
BEGIN non e` strettamente necessario, visto che non occorre dichiarare
variabili, e che esse sono automaticamente inizializzate tutte a 0 o
stringa vuota.

man awk per maggiori dettagli.
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: