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.

set<br />

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

Tuttavia:<br />

$export WEBROOT_PATH=/usr/local/webroot<br />

$eval sed ’s%\%$WEBROOT_PATH%’ < test.pl > out<br />

# ====<br />

Che funziona bene, eseguendo l’attesa sostituzione:<br />

my $WEBROOT = /usr/local/webroot;<br />

### Correzioni all’esempio originale eseguite da Paulo Marcel Coelho Aragao.<br />

Cautela<br />

Il comando eval può essere rischioso e normalmente, quando esistono<br />

alternative ragionevoli, dovrebbe essere evitato. Un eval $COMANDI<br />

esegue tutto il contenuto <strong>di</strong> COMANDI, che potrebbe riservare spiacevoli<br />

sorprese come un rm -rf *. Eseguire del co<strong>di</strong>ce non molto familiare<br />

contenente un eval, e magari scritto da persone sconosciute, significa<br />

vivere pericolosamente.<br />

Il comando set mo<strong>di</strong>fica il valore delle variabili interne <strong>di</strong> uno script. Un possibile uso è quello <strong>di</strong><br />

attivare/<strong>di</strong>sattivare le modalità (opzioni), legate al funzionamento della shell, che determinano il<br />

comportamento dello script. Un’altra applicazione è quella <strong>di</strong> reimpostare i parametri posizionali<br />

passati ad uno script con il risultato dell’istruzione (set ‘comando‘). Lo script assume i campi<br />

dell’output <strong>di</strong> comando come parametri posizionali.<br />

Esempio 11-15. Utilizzare set con i parametri posizionali<br />

#!/bin/bash<br />

# script "set-test"<br />

# Invocate lo script con tre argomenti da riga <strong>di</strong> comando,<br />

# per esempio, "./set-test uno due tre".<br />

echo<br />

echo "Parametri posizionali prima <strong>di</strong> set \‘uname -a\‘ :"<br />

echo "Argomento nr.1 da riga <strong>di</strong> comando = $1"<br />

echo "Argomento nr.2 da riga <strong>di</strong> comando = $2"<br />

echo "Argomento nr.3 da riga <strong>di</strong> comando = $3"<br />

set ‘uname -a‘ # Imposta i parametri posizionali all’output<br />

# del comando ‘uname -a‘<br />

echo $_ # Sconosciuto<br />

205

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

Saved successfully!

Ooh no, something went wrong!