lunedì 12 novembre 2012

tcsh foreach

Per usare il foreach di tcsh, esempio per copiare file di un certo tipo in una sottocartella


foreach file ( *.tif )
foreach? cp $file res/$file:r
foreach? echo -n $file 
foreach? end

Ora commento pezzo per pezzo:

La sintassi del comando foreach è la seguente:
foreach var ( statement )
Nel caso dell'esempio ho una variabile file, che contiene tutti i file .tif uno per uno all'interno della directory
foreach file ( *.tif )

Questo è quanto appare nella shell una volta dato il comando foreach correttamente
foreach?

Copio cp, il contenuto della variabile $file dentro alla cartella res, con :r tolgo l'estensione
foreach? cp $file res/$file:r

Filename modifiers
$file:h Remove a trailing pathname component, leaving the head.
$file:t Remove all leading pathname components, leaving the tail.
$file:e Remove all but the extension.
$file:r Remove a filename extension `.xxx', leaving the root name.
$file:u Uppercase the first lowercase letter.
$file:l Lowercase the first uppercase letter.
$file:s/l/r/ Substitute l for r. l is simply a string like r, not a regular expression.


Per la stampa di quello che ho copiato, modalità verbose in proprio:
foreach? echo -n $file 
con -n si toglie l'acapo automatico dall'echo

Per completare il foreach
foreach? end

References

Nessun commento:

Posta un commento