Prova pratica 2002.01.24

From Sistemi Operativi
(Redirected from Bash scripting 2002 gennaio)
Jump to navigation Jump to search

link al compito

Esercizio 1

Scrivere uno script che estragga messaggi con subject SUBSCRIBE:<email> da un folder di posta elettronica e che inserisca <email> in un file chiamato mailing.list, evitando di inserire dupplicati.

file:

From: montreso@cs.unibo.it
Subject: SUBSCRIBE: montreso@cs.unibo.it
Date: xx.xx.xx
From: montreso@cs.unibo.it
Subject: SUBSCRIBE: montreso@phd.cs.unibo.it
Date: xx.xx.xx
From: rossi@cs.unibo.it
Subject: SUBSCRIBE: rossi@cs.unibo.it
Date: xx.xx.xx
From: bononi@cs.unibo.it
Subject: SUBSCRIBE: rossi@cs.unibo.it
Date: xx.xx.xx

il file risultante deve contenere:

montreso@cs.unibo.it
montreso@phd.cs.unibo.it
rossi@cs.unibo.it

Soluzione di Eddy

#! /bin/bash

controllaOccorrenza ()
{
   unaVolta=0
   if [ ! -f $2 ]
   then
      touch $2
   fi
   buf=`cat $2`
   for word in $buf; do
      if [ "$word" == "$1" ]; then
         unaVolta=1
         break
      fi
   done
   if [ "$unaVolta" -eq "0" ]; then
      echo "$1" >> $2
   fi
}

okRead=0
buf=`cat $1`
for word in $buf; do
   # echo "$word"
   if [ "$okRead" -eq "1" ]; then
      controllaOccorrenza $word mailing.list
      okRead=0
   fi
   if [ "$word" == "SUBSCRIBE:" ]; then
      okRead=1
   fi
done