# Parte ricorsiva della soluzione del 10 Febbraio 2006 - TURNI 1/2 # SINTASSI # $0 dirass dirsemp # # VARIABILI LOCALI DEL PROCESSO SUBSHELL DIR_CREATI=0 NUM_SOTTODIR=0 NUM_FILE=0 # -------------------------------------- # Mi sposto nella directory identificata dal primo parametro echo "--> Directory corrente = $1" cd $1 # comincio a contare i file se la directory corrente e' uguale al secondo # parametro case $1 in */$2) # Conteggio dei file e delle sottodirectory della directory corrente for i in * do if test -f $i then NUM_FILE=`expr $NUM_FILE + 1` else if test -d $i then NUM_SOTTODIR=`expr $NUM_SOTTODIR + 1` fi fi done # Conteggio effettuato. # Adesso si tratta di verificare la condizione su numero di file e # sottodirectory if test $NUM_FILE = `expr $NUM_SOTTODIR + 2` then echo "--- Trovato direttorio $1 ---" for i in 1 2 do echo -n "Inserisci $i nome di direttorio semplice:" read nome mkdir $nome if test $? -eq 0 then DIR_CREATI=`expr $DIR_CREATI + 1` fi done echo "----------------------------" fi;; *) ;; esac #invoco la parte ricorsiva su ciascuna sottodirectory for i in * do if test -d $i -a -x $i then $0 $1/$i $2 # recupero il numero di sottodirettori creati dalle invocazioni figlie DIR_CREATI=`expr $DIR_CREATI + $?` fi done # ritorno al mio chiamante il numero di direttori che conosco io (perche' creati # da me o dai miei figli ricorsivi) exit $DIR_CREATI