Chiarimento su scripting shell
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:
questo ciclo for cosa dovrebbe fare?
for file_name in 'ls $root_path / * .$ext1' do -------
questo ciclo for cosa dovrebbe fare?
Risposte
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:
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!
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!
Quindi in tutti questi file listati, appena trova quello con nome_file.ext1, mi esegue l'istruzione giusto?
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!
Studiati le basi del Bash prima di passare alla pratica...
Saluti!