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.

${var%Modello}<br />

${var%%Modello}<br />

Capitolo 9. Variabili riviste<br />

toglie_zero_iniziale () # Toglie possibili zeri iniziali<br />

{ #+ dagli argomenti passati.<br />

return=${1#0} # "1" stà per $1 -- l’argomento passato.<br />

} # "0" in<strong>di</strong>ca ciò che va tolto da "$1" -- gli zeri.<br />

Variante, più elaborata dell’esempio precedente, <strong>di</strong> Manfred Schwarb:<br />

toglie_zero_iniziale2 () # Toglie possibili zeri iniziali, altrimenti<br />

{ #+ <strong>Bash</strong> interpreta tali numeri come valori ottali.<br />

shopt -s extglob # Abilita il globbing esteso.<br />

local val=${1##+(0)} # Usa una variabile locale, verifica d’occorrenza più<br />

#+ lunga delle serie <strong>di</strong> 0.<br />

shopt -u extglob # Disabilita il globbing esteso.<br />

_toglie_zero_iniziale2=${val:-0}<br />

# Nel caso l’input sia 0, restituisce 0 invece <strong>di</strong> "".<br />

}<br />

Altro esempio <strong>di</strong> utilizzo:<br />

echo ‘basename $PWD‘ # Nome della <strong>di</strong>rectory <strong>di</strong> lavoro corrente.<br />

echo "${PWD##*/}" # Nome della <strong>di</strong>rectory <strong>di</strong> lavoro corrente.<br />

echo<br />

echo ‘basename $0‘ # Nome dello script.<br />

echo $0 # Nome dello script.<br />

echo "${0##*/}" # Nome dello script.<br />

echo<br />

nomefile=test.dat<br />

echo "${nomefile##*.}" # dat<br />

# Estensione del nome del file.<br />

Toglie da $var la parte più breve/lunga <strong>di</strong> $Modello verificata alla fine <strong>di</strong> $var.<br />

La versione 2 <strong>di</strong> <strong>Bash</strong> ha introdotto delle opzioni aggiuntive.<br />

Esempio 9-17. Ricerca <strong>di</strong> corrispondenza nella sostituzione <strong>di</strong> parametro<br />

#!/bin/bash<br />

# patt-matching.sh<br />

# Ricerca <strong>di</strong> corrispondenza utilizzando gli operatori si sostituzione<br />

#+ <strong>di</strong> parametro # ## % %%.<br />

133

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

Saved successfully!

Ooh no, something went wrong!