Questa volta proviamo un esercizio un poco più complesso sempre con bash e calcoliamo la dimensione totale dei file in una cartella.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash elenca() { if [ $# -eq 0 ] then cartella="." else cartella=$1 fi totale=0 ls -l $cartella | (while read permessi pos utente gruppo dim riga; do totale=$((totale + dim)) done echo "$totale bytes") } elenca $1 |
Questa è un’occasione per notare alcune caratteristiche:
- dopo la dichiarazione del ciclo while e prima del punto e virgola, è possibile specificare un elenco di parametri nei quali verrà suddivisa la stringa per ogni riga del precedente risultato
- il termine $# fa riferimento al numero di parametri presenti nell’argomento al programma (il parametro 0 è il nome del programma stesso)
- il termine $1 prende il primo parametro dell’argomento, successivo al termine 0-esimo riferito al nome del programma stesso
L’utilizzo del programma avviene in questo modo: