Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
---|---|---|
Indietro | Capitolo 4. Introduzione alle variabili ed ai parametri | Avanti |
A differenza di molti altri linguaggi di programmazione, Bash non differenzia le sue variabili per "tipo". Essenzialmente le variabili Bash sono stringhe di caratteri, ma, in base al contesto, la shell consente le operazioni con interi e i confronti di variabili. Il fattore determinante è se il valore di una variabile sia formato, o meno, solo da cifre.
Esempio 4-4. Intero o stringa?
#!/bin/bash # int-or-string.sh: Intero o stringa? a=2334 # Intero. let "a += 1" echo "a = $a " # a = 2335 echo # Intero, ancora. b=${a/23/BB} # Sostituisce "23" con "BB". # Questo trasforma $b in una stringa. echo "b = $b" # b = BB35 declare -i b # Dichiararla come intero non aiuta. echo "b = $b" # b = BB35 let "b += 1" # BB35 + 1 = echo "b = $b" # b = 1 echo c=BB34 echo "c = $c" # c = BB34 d=${c/BB/23} # Sostituisce "BB" con "23". # Questo trasforma $d in un intero. echo "d = $d" # d = 2334 let "d += 1" # 2334 + 1 = echo "d = $d" # d = 2335 echo # Che dire a proposito delle variabili nulle? e="" echo "e = $e" # e = let "e += 1" # Sono consentite le operazioni aritmetiche sulle #+ variabili nulle? echo "e = $e" # e = 1 echo # Variabile nulla trasformata in un intero. # E sulle variabili non dichiarate? echo "f = $f" # f = let "f += 1" # Sono consentite le operazioni aritmetiche? echo "f = $f" # f = 1 echo # Variabile non dichiarata trasformata in un intero. # Le variabili in Bash non sono tipizzate. exit 0 |
Le variabili non tipizzate sono sia una benedizione che una calamità. Permettono maggiore flessibilità nello scripting (abbastanza corda per impiccarvici!) e rendono più semplice sfornare righe di codice. Per contro, consentono errori subdoli e incoraggiano stili di programmazione disordinati.
È compito del programmatore tenere traccia dei tipi di variabili contenute nello script. Bash non lo farà per lui.