4.3. Les variables Bash ne sont pas typées

Contrairement à de nombreux autres langages de programmation, Bash ne classe pas ses variables par « type ». Pour l'essentiel, les variables Bash sont des chaînes de caractères mais, suivant le contexte, Bash autorise les opérations arithmétiques et les comparaisons sur ces variables, le facteur décisif étant la présence de chiffres uniquement dans la variable.

Exemple 4.4. Entier ou chaîne de caractères ?

#!/bin/bash
# int-or-string.sh : Entier ou chaîne de caractères ?

a=2334                   # Un entier.
let "a += 1"
echo "a = $a "           # a = 2335
echo                     # Toujours un entier.


b=${a/23/BB}             # Remplace "23" par "BB".
                         # Transforme ainsi $b en une chaîne de caractères.
echo "b = $b"            # b = BB35
declare -i b             # Le déclarer comme entier n'aide pas.
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}             # Remplace "BB" par "23".
                         # Cela fait de $d un entier.
echo "d = $d"            # d = 2334
let "d += 1"             # 2334 + 1 =
echo "d = $d"            # d = 2335
echo

# Et les variables nulles ?
e=""
echo "e = $e"            # e =
let "e += 1"             # Les opérations arithmétiques sont-elles permises sur
                         # une variable nulle ?
echo "e = $e"            # e = 1
echo                     # Variable nulle transformée en entier.

# Et les variables non déclarées ?
echo "f = $f"            # f =
let "f += 1"             # Opérations arithmétiques permises ?
echo "f = $f"            # f = 1
echo                     # Variable non déclarée transformée en entier.



# Les variables dans Bash sont essentiellement non typées.

exit 0

Les variables non typées sont à la fois une bénédiction et une malédiction. Elles apportent plus de souplesse dans l'écriture des scripts, ce qui rend plus aisé le ciselage des lignes de code (et de la corde pour se pendre). En contrepartie, elles permettent à des erreurs subtiles de s'infiltrer dans les programmes et encouragent des habitudes de programmation peu soignée.

Pour alléger le fardeau de la traçabilité des types des variables dans un script, Bash permet la déclaration des variables.