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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

export<br />

Capitolo 11. Coman<strong>di</strong> interni e builtin<br />

Il comando export rende <strong>di</strong>sponibili le variabili a tutti i processi figli generati dallo script in<br />

esecuzione o dalla shell. Purtroppo, non vi è alcun modo per esportare le variabili in senso<br />

contrario verso il processo genitore, ovvero nei confronti del processo che ha chiamato o invocato<br />

lo script o la shell. Un uso importante del comando export si trova nei file <strong>di</strong> avvio (startup) per<br />

inizializzare e rendere accessibili le variabili d’ambiente ai susseguenti processi utente.<br />

Esempio 11-18. Utilizzare export per passare una variabile ad uno script awk incorporato<br />

#!/bin/bash<br />

# Ancora un’altra versione dello script "column totaler"<br />

#+ (col-totaler.sh) che aggiunge una specifica colonna (<strong>di</strong> numeri)<br />

#+ nel file <strong>di</strong> destinazione. Qui viene usato l’ambiente per passare<br />

#+ una variabile dello script ad ’awk’... e inserire lo script awk<br />

#+ in una variabile.<br />

ARG=2<br />

E_ERR_ARG=65<br />

if [ $# -ne "$ARG" ] # Verifica il corretto numero <strong>di</strong> argomenti da<br />

#+ riga <strong>di</strong> comando.<br />

then<br />

echo "Utilizzo: ‘basename $0‘ nomefile colonna-numero"<br />

exit $E_ERR_ARG<br />

fi<br />

nomefile=$1<br />

colonna_numero=$2<br />

#===== Fino a questo punto è uguale allo script originale =====#<br />

export colonna_numero<br />

# Esporta il numero <strong>di</strong> colonna all’ambiente, in modo che sia <strong>di</strong>sponibile<br />

#+ all’utilizzo.<br />

# -----------------------------------------------scriptawk=’{<br />

totale += $ENVIRON["colonna_numero"]}<br />

END { print totale }’<br />

# Sì, una variabile può contenere uno script awk.<br />

# ------------------------------------------------<br />

# Ora viene eseguito lo script awk.<br />

awk $scriptawk $nomefile<br />

# Grazie, Stephane Chazelas.<br />

exit 0<br />

208

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

Saved successfully!

Ooh no, something went wrong!