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.

}<br />

# Errore, se l’argomento è assente.<br />

fi<br />

echo<br />

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

until [ -z "$1" ]<br />

do<br />

# Scorre gli argomenti passati alla funzione.<br />

echo -n "$1"<br />

# Visualizza gli argomenti uno alla volta, eliminando i ritorni a capo.<br />

echo -n " "<br />

# Inserisce degli spazi tra le parole.<br />

shift<br />

# Successivo.<br />

done<br />

echo<br />

return 0<br />

Se il file caricato con source è anch’esso uno script eseguibile, verrà messo in esecuzione e, alla<br />

fine, il controllo ritornerà allo script che l’ha richiamato. A questo scopo, uno script eseguibile<br />

caricato con source può usare return.<br />

Si possono passare (opzionalmente) degli argomenti al file caricato con source come parametri<br />

posizionali.<br />

source $nomefile $arg1 arg2<br />

È anche possibile per uno script usare source in riferimento a se stesso, sebbene questo non sembri<br />

avere reali applicazioni pratiche.<br />

Esempio 11-21. Un (inutile) script che “carica” se stesso<br />

#!/bin/bash<br />

# self-source.sh: uno script che segue se stesso "ricorsivamente."<br />

# Da "Stupid Script Tricks," Volume II.<br />

MAXPASSCNT=100 # Numero massimo <strong>di</strong> esecuzioni.<br />

echo -n "$conta_passi "<br />

# Al primo passaggio, vengono visualizzati solo due spazi,<br />

#+ perché $conta_passi non è stata inizializzata.<br />

let "conta_passi += 1"<br />

# Si assume che la variabile $conta_passi non inizializzata possa essere<br />

#+ incrementata subito.<br />

# Questo funziona con <strong>Bash</strong> e pdksh, ma si basa su un’azione non portabile<br />

213

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

Saved successfully!

Ooh no, something went wrong!