- Codice:
# Realizzare uno script per la shell bash (completando il codice fornito
# nella traccia) che prende come parametri sulla linea di comando il nome di
# una directory e una stringa.
# Lo script deve controllare che ci siano esattamente due parametri
# sulla linea di comando, e che il primo sia il nome di una directory;
# in caso contrario,lo script deve scrivere un messaggio di errore e terminare
# immediatamente la sua esecuzione.
# Altrimenti, lo script deve trovare nella directory indicata come
# primo parametro tutti i file il cui nome termina con ".txt", e
# per ciascun file deve stampare un messaggio che indica se il file
# contiene o non contiene la stringa passata come secondo parametro.
# Infine, lo script deve stampare il numero di file trovati che
# contengono la stringa.
#
# SUGGERIMENTI
# - il comando
# grep --quiet stringa nomefile
# può essere usato per verificare se un file contiene una certa stringa;
# se la stringa è presente, l'exit status è 0, altrimenti l'exit status
# è diverso da 0.
# NOTA: il codice fornito provvede a creare alcuni file
# nella directory myfiles, in modo da poter testare lo script.
#
# Esempio:
# lanciando lo script con il comando:
# ./main.sh myfiles ESAME
# lo script deve produrre come output:
# Il file myfiles/file2.txt contiene la stringa ESAME
# Il file myfiles/file3.txt contiene la stringa ESAME
# Il file myfiles/file4.txt NON contiene la stringa ESAME
# Trovati 2 files contenenti la stringa ESAME
#
# Esempio:
# lanciando lo script con il comando:
# ./main.sh myfiles ALTRE
# lo script deve produrre come output:
# Il file myfiles/file2.txt NON contiene la stringa ALTRE
# Il file myfiles/file3.txt NON contiene la stringa ALTRE
# Il file myfiles/file4.txt contiene la stringa ALTRE
# Trovati 1 files contenenti la stringa ALTRE
#
# --- le seguenti istruzioni creano i file per il test nella ---
# --- directory 'myfiles'---
#! /bin/bash
mkdir myfiles
cat > myfiles/file1.dat << EOF
0 12 ESAME
12 0
2 1
EOF
cat > myfiles/file2.txt << EOF
0 12
ESAME 33
2 1
EOF
cat > myfiles/file3.txt << EOF
22 ESAME
12 0
2 1
EOF
cat > myfiles/file4.txt << EOF
22 ALTRE PAROLE
12 0
2 1
EOF
Questo è il codice scritto da me
- Codice:
if[[ "$#" != 2 ]]; then
echo "Devi passare solo due argomenti, ovvero il nome della directory e la stringa"
exit 1
fi
if [[ -d "$1"]]; then
echo "Errore verificato non è una directory"
exit 1
fi
for myfiles in $1/*; do
find . -iname '*.txt' -type f -exec echo '{}' >> '$1'';'
for myfiles in $(ls *.txt); do
grep --quiet
done
done
exit 0