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.

Capitolo 31. Precauzioni<br />

Uno script non può esportare (export) le variabili in senso contrario né verso il suo processo genitore, la<br />

shell, né verso l’ambiente. Proprio come insegna la biologia, un figlio può ere<strong>di</strong>tare da un genitore, ma<br />

non viceversa.<br />

QUELLO_CHE_VUOI=/home/bozo<br />

export QUELLO_CHE_VUOI<br />

exit 0<br />

bash$ echo $QUELLO_CHE_VUOI<br />

bash$<br />

È sicuro, al prompt dei coman<strong>di</strong>, $QUELLO_CHE_VUOI rimane non impostata.<br />

Impostare e manipolare variabili all’interno <strong>di</strong> una subshell e cercare, successivamente, <strong>di</strong> usare quelle<br />

stesse variabili al <strong>di</strong> fuori del loro ambito, provocherà una spiacevole sorpresa.<br />

Esempio 31-2. I trabocchetti <strong>di</strong> una subshell<br />

#!/bin/bash<br />

# Le insi<strong>di</strong>e delle variabili <strong>di</strong> una subshell.<br />

variabile_esterna=esterna<br />

echo<br />

echo "variabile esterna = $variabile_esterna"<br />

echo<br />

(<br />

# Inizio della subshell<br />

echo "variabile esterna nella subshell = $variabile_esterna"<br />

variabile_interna=interna # Impostata<br />

echo "variabile interna nella subshell = $variabile_interna"<br />

variabile_esterna=interna # Il valore risulterà cambiato a livello globale?<br />

echo "variabile esterna nella subshell = $variabile_esterna"<br />

# Se le avessimo ’esportate’ ci sarebbe stata <strong>di</strong>fferenza?<br />

# export variabile_interna<br />

# export variabile_esterna<br />

# Provate e vedete.<br />

# Fine della subshell<br />

)<br />

echo<br />

echo "variabile interna al <strong>di</strong> fuori della subshell = $variabile_interna"<br />

# Non impostata.<br />

echo "variabile esterna al <strong>di</strong> fuori della subshell = $variabile_esterna"<br />

# Immutata.<br />

echo<br />

exit 0<br />

536

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

Saved successfully!

Ooh no, something went wrong!