Originariamente inviato da valer_85
ecco un altro problema...
devo passare allo script una directory e di questa directory devo contare il numero dei file e dei link e delle sottocartelle...nel caso di una sottodirectory devo entrare dentro di essa ricorsivamente... ecco la mia idea, xò non funziona xkè ogni volta ke ricomincia la ricorsione le variabili si riazzerano...
Uhm ... non è banale!
In questo caso, lo script eseguito in maniera ricorsiva dovrebbe poter restituire dei dati al padre in modo da effettuare una sommatoria ma ... uno script "figlio" non può modificare le variabili del padre e neanche (in modo semplice) restituire dei dati.

Io lo farei così (sempre usando la ricorsione, ma tramite una funzione):
codice:
#!/bin/bash

function count_dir_informations ()
{
    local DIR="$1"
    cd "$DIR"

    for F in *; do
        if [ "$F" != "." -a "$F" != ".." ]; then
            if [ -d "$F" ]; then
                COUNT_D=$[COUNT_D+1]

                if [ -x "$F" ]; then
                    count_dir_informations "$DIR/$F"
                    cd $DIR
                else
                    echo "Impossibile entrare in $DIR/$F"
                fi
            elif [ -f "$F" ]; then
                COUNT_F=$[COUNT_F+1]
            elif [ -L "$F" ]; then
                COUNT_L=$[COUNT_L+1]
            fi
        fi
    done
}

COUNT_F=0
COUNT_D=0
COUNT_L=0

glob_dot_filenames=1

count_dir_informations $1

echo "Numero di file: $COUNT_F"
echo "Numero di directory: $COUNT_D"
echo "Numero di link: $COUNT_L"
Se però ci sono dei link "circolari" o dei link che puntano a directory più sopra (nell'albero delle directory) .... credo che lo script sia fottuto.