Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
---|---|---|
Indietro | Capitolo 9. Variabili riviste | Avanti |
I builtin declare o typeset (sono sinonimi esatti) consentono di limitare le proprietà delle variabili. È una forma molto debole di tipizzazione, se confrontata con quella disponibile per taluni linguaggi di programmazione. Il comando declare è specifico della versione 2 o successive di Bash. Il comando typeset funziona anche negli script ksh.
declare -r var1 |
(declare -r var1 è uguale a readonly var1)
È approssimativamente equivalente al qualificatore di tipo const del C. Il tentativo di modificare il valore di una variabile in sola lettura fallisce generando un messaggio d'errore.
declare -i numero # Lo script tratterà le successive occorrenze di "numero" come un intero. numero=3 echo "numero = $numero" # Numero = 3 numero=tre echo "Numero = $numero" # numero = 0 # Cerca di valutare la stringa "tre" come se fosse un intero. |
Sono consentire alcune operazioni aritmetiche sulle variabili dichiarate interi senza la necessità di usare expr o let.
n=6/3 echo "n = $n" # n = 6/3 declare -i n n=6/3 echo "n = $n" # n = 2 |
declare -a indici |
La variabile indici
verrà
trattata come un array.
declare -f |
In uno script, una riga con declare -f senza alcun argomento, elenca tutte le funzioni precedentemente definite in quello script.
declare -f nome_funzione |
Un declare -f nome_funzione elenca solo la funzione specificata.
declare -x var3 |
Dichiara la variabile come esportabile al di fuori dell'ambiente dello script stesso.
declare -x var3=373 |
Il comando declare consente di assegnare un valore alla variabile mentre viene dichiarata, impostando così anche le sue proprietà.
Esempio 9-22. Utilizzare declare per tipizzare le variabili
#!/bin/bash funz1 () { echo Questa è una funzione. } declare -f # Elenca la funzione precedente. echo declare -i var1 # var1 è un intero. var1=2367 echo "var1 dichiarata come $var1" var1=var1+1 # La dichiarazione di intero elimina la necessità di #+ usare 'let'. echo "var1 incrementata di 1 diventa $var1." # Tentativo di modificare il valore di una variabile dichiarata come intero. echo "Tentativo di modificare var1 nel valore in virgola mobile 2367.1." var1=2367.1 # Provoca un messaggio d'errore, la variabile non cambia. echo "var1 è ancora $var1" echo declare -r var2=13.36 # 'declare' consente di impostare la proprietà #+ della variabile e contemporaneamente #+ assegnarle un valore. echo "var2 dichiarata come $var2" # Tentativo di modificare una variabile in sola #+ lettura. var2=13.37 # Provoca un messaggio d'errore e l'uscita dallo #+ script. echo "var2 è ancora $var2" # Questa riga non verrà eseguita. exit 0 # Lo script non esce in questo punto. |
L'uso del builtin declare restringe l'ambito di una variabile.
Tuttavia . . .
|