sono ore che sto smanettando con un semplicissimo script che ho scritto ma, ahimé, non sono ancora riuscito a capire quale sia l'errore.
Lo script in questione dovrebbe eseguire la seguente operazione: leggere da una directory tutti i file con estensione .jar e, per ogni parola contenuta nel file "prova.txt", deve effettuare un grep per verificare se la parola è contenuta in uno di quei file jar.
Esempio:
grep -i parola file.jar
la parola non è sempre la stessa perché viene presa da un file (prova.txt) che contiene una lista di parole, e i file jar sono abbastanza. Lo script che ho elaborato dovrebbe automatizzare il processo perché con il primo ciclo for salva nella variabile file i singoli file jar che trova nella directory e con il secondo ciclo for salvo nella variabile arg le singole parole contenute nel file di testo prova.txt. Il problema sembrerebbe esser dovuto al contenuto di arg: se inserisco un echo $arg in output noto che la variabile contiene di volta in volta le parole prese dalla lista. Ma se provo a sostituire a quell'echo quest'altro echo $arg e $file non mi visualizza il valore di arg e, quando lo fa, spesso lo spezzetta e unisce i caratteri alla fine della parola restituita da file. Non so se ho reso bene l'idea, nel caso cercherò di spiegarmi meglio.
Di seguito vi posto il codice del mio script:
Codice: Seleziona tutto
#!/bin/sh
for file in `ls *.jar`
do
for arg in `cat prova.txt`
do
grep -i $arg $file
done
done
exit 0;