11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 14. Sostituzione <strong>di</strong> comando<br />

La sostituzione <strong>di</strong> comando riassegna il risultato <strong>di</strong> un comando 1 , o anche <strong>di</strong> più coman<strong>di</strong>.<br />

Letteralmente: connette l’output <strong>di</strong> un comando ad un altro contesto. 2<br />

La forma classica <strong>di</strong> sostituzione <strong>di</strong> comando utilizza gli apici singoli inversi (‘...‘). I coman<strong>di</strong> all’interno<br />

degli apici inversi (apostrofi inversi) generano una riga <strong>di</strong> testo formata dai risultati dei coman<strong>di</strong>.<br />

nome_script=‘basename $0‘<br />

echo "Il nome <strong>di</strong> questo script è $nome_script."<br />

I risultati dei coman<strong>di</strong> possono essere usati come argomenti per un altro comando, per impostare<br />

una variabile e anche per generare la lista degli argomenti in un ciclo for.<br />

rm ‘cat nomefile‘ # “nomefile” contiene l’elenco dei file da cancellare.<br />

#<br />

# S. C. fa notare che potrebbe ritornare l’errore "arg list too long".<br />

# Meglio xargs rm -- < nomefile<br />

# ( -- serve nei casi in cui “nomefile” inizia con un “-” )<br />

elenco_filetesto=‘ls *.txt‘<br />

# La variabile contiene i nomi <strong>di</strong> tutti i file *.txt della <strong>di</strong>rectory<br />

#+ <strong>di</strong> lavoro corrente.<br />

echo $elenco_filetesto<br />

elenco_filetesto2=$(ls *.txt) # Forma alternativa <strong>di</strong> sostituzione <strong>di</strong> comando.<br />

echo $elenco_filetesto2<br />

# Stesso risultato.<br />

# Un problema possibile, nell’inserire un elenco <strong>di</strong> file in un’unica stringa,<br />

# è che si potrebbe insinuare un ritorno a capo.<br />

#<br />

# Un modo più sicuro per assegnare un elenco <strong>di</strong> file ad un parametro<br />

#+ è usare un array.<br />

# shopt -s nullglob # Se non viene trovato niente, il nome del file<br />

#+ non viene espanso.<br />

# elenco_filetesto=( *.txt )<br />

#<br />

# Grazie, S.C.<br />

Nota: La sostituzione <strong>di</strong> comando invoca una subshell.<br />

383

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!