Chiarimento su scripting shell

fk16
Ragazzi ho un problema che forse vi sembrerà banale. E' da poco che ho cominciato questo argomento, e sto incontrando alcune difficoltà. Quella che perora non riesco a capire è la seguente:
for file_name in 'ls $root_path / * .$ext1'
  do
-------

questo ciclo for cosa dovrebbe fare?

Risposte
probid
Dipende, gli spazi nella parte tra gli apici sono voluti? (che poi gli apici stessi non vanno bene, perché considerano il contenuto come stringa. Per far sì che il comando all'interno venga eseguito devi usare il backtick ( ` )).
A me sembra più sensato senza spazi.

ls serve per listare file, e * prende una qualsiasi sottostringa in sua corrispondenza.

Nel caso specifico se \$root_path è una variabile contenente il percorso di una directory e \$ext1 un'estensione, quel comando ti listerà tutti i file di estensione \$ext1 presenti in \$root_path. Esempio:

root_path=miaDirectory
ext1=txt

ls miaDirectory/*.txt  # sostituendo esegue questo, che lista tutti i file txt dentro miaDirectory


Se invece gli spazi ci sono, ls considera ogni parametro come un elemento aggiuntivo. Quindi ti listerà \$root_path, il contenuto della root (/), della directory corrente (*) e il file .\$ext1 (col punto davanti, eh).

Ciao!

fk16
Quindi in tutti questi file listati, appena trova quello con nome_file.ext1, mi esegue l'istruzione giusto?

probid
No, è un ciclo for sui nomi dei file. Ad ogni iterazione $file_name avrà il nome di un file tra quelli in lista.
Studiati le basi del Bash prima di passare alla pratica...
Saluti!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.