Salve a tutti. Ho alcune perplessità riguardante questo esercizio. Non sono sicuro di averlo svolto correttamente. Se qualcuno sarebbe così gentile di visionarlo. Questo è l'ultimo esercizio che propongo sul forum. Ringrazio tutti coloro che mi hanno aiutato e mi scuso per avervi fatto perdere tempo XD
https://onlinegdb.com/CN6UB3vu --> link del codice
#! /bin/bash
# Progettare uno script che prende un parametro che indica il nome di una
# directory e sia in grado di esaminare tutti gli elementi della directory,
# senza entrare nelle eventuali sotto-directory;
# lo script, per ciascun elemento trovato nella directory, deve
# scrivere in un file denominato "summary.out" (nella directory corrente),
# un "sommario" dell'elemento secondo le sueguenti modalità:
# 1) se l'elemento è un file, lo script deve riportare nel sommario il nome del
# file e la sua prima riga
# 2) se l'elemento è una sottodirectory, lo script deve riportare nel sommario
# il nome della sottodirectory e il numero di file
# in essa contenuti.
# Si controlli che il parametro passato sulla linea di comando sia uno e che
# sia il nome di una directory.
#
# SUGGERIMENTO
# - Per stampare la prima riga di un file, si può usare il comando
# head -n 1 NOMEFILE
# - Per ottenere il numero di elementi di una directory si può usare
# il comando ls (che scrive in output i contenuti di una directory)
# in combinazione con il comando wc -l (che scrive in output il numero
# di linee del suo input).
#
# Esempio: eseguendo il comando:
# ./summary.sh myfiles
# verrà creato un file summary.out con il seguente contenuto:
# FILE myfiles/file1.txt: la vispa
# FILE myfiles/file2.txt: sotto la panca
# FILE myfiles/input.dat: riga uno
# SOTTODIRECTORY myfiles/myfiles2: 1
#
# Le seguenti istruzioni creano i file e le sottodirectory per il test
mkdir myfiles
mkdir myfiles/myfiles2
cat > myfiles/input.dat << EOF
riga uno
riga due
riga tre
EOF
cat > myfiles/file1.txt << EOF
la vispa
Teresa
avea tra l'erbetta
EOF
cat > myfiles/file2.txt << EOF
sotto la panca
la capra campa
sopra la panca
la capra crepa
EOF
cat > myfiles/myfiles2/file3.txt << EOF
altro file
EOF
# INSERIRE QUI IL CODICE
if[[ "$#" != 1 ]]; then
echo "Devi passare solo un argomento, ovvero il nome della directory"
exit 1
fi
for myfiles in $(ls); do
if [[ -f "$file" ]]; then
find . -iname '*.txt' -type f
head -n 1 "summary.out"
elif [[ -d "myfile" ]]; then
num=$((num+1))
echo "Ci sono $num file in $1"
head -n 1 "summary.out"
fi
done
exit 0