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.

Appen<strong>di</strong>ce A. Script aggiuntivi<br />

Stéphane Chazelas dà un esempio <strong>di</strong> programmazione object-oriented con uno script <strong>Bash</strong>.<br />

Esempio A-20. Database object-oriented<br />

#!/bin/bash<br />

# obj-oriented.sh: programmazione object-oriented in uno script <strong>di</strong> shell.<br />

# Script <strong>di</strong> Stephane Chazelas.<br />

# Nota importante:<br />

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

# Se eseguite lo script con la versione 3 o successive <strong>di</strong> <strong>Bash</strong>,<br />

#+ sostituite tutti i punti presenti nei nomi delle funzioni con un carattere<br />

#+ "consentito", ad esempio il trattino <strong>di</strong> sottolineatura (underscore).<br />

persona.new() # Assomiglia quasi ad una <strong>di</strong>chiarazione <strong>di</strong> classe in C++.<br />

{<br />

local obj_nome=$1 cognome=$2 nome=$3 datanascita=$4<br />

}<br />

eval "$obj_nome.set_cognome() {<br />

eval \"$obj_nome.get_cognome() {<br />

echo \$1<br />

}\"<br />

}"<br />

eval "$obj_nome.set_nome() {<br />

eval \"$obj_nome.get_nome() {<br />

echo \$1<br />

}\"<br />

}"<br />

eval "$obj_nome.set_datanascita() {<br />

eval \"$obj_nome.get_datanascita() {<br />

echo \$1<br />

}\"<br />

eval \"$obj_nome.show_datanascita() {<br />

echo \$(date -d \"1/1/1970 0:0:\$1 GMT\")<br />

}\"<br />

eval \"$obj_nome.get_eta() {<br />

echo \$(( (\$(date +%s) - \$1) / 3600 / 24 / 365 ))<br />

}\"<br />

}"<br />

$obj_nome.set_cognome $cognome<br />

$obj_nome.set_nome $nome<br />

$obj_nome.set_datanascita $datanascita<br />

echo<br />

persona.new self Bozeman Bozo 101272413<br />

# Crea un’instance <strong>di</strong> "persona.new"<br />

655

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

Saved successfully!

Ooh no, something went wrong!