4.2. Assignació a variable¶
L’assignació d’un valor a una variable es pot realitzar mitjançant L’operador
=
sense espais ni abans ni després.
$ variable=23
# ^ ^ cap espai de separació
No confonguis l’operador d’assignació amb l’operador de comparació (mira
XXX 7.3. Other Comparison Operators. La diferència és el context on apareix =
.
Exemple 1. Assignació de valors a una variable¶
#!/bin/bash
# Demostració de diferents tipus d'assignació de valors a una variable
echo
# Una variable apareix sense $ al davant quan està sent assignada, en comptes de
# referenciada.
# Assignació
a=879
echo "El valor de \"a\" és $a." # Sortida: El valor de "a" és 879.
# Assignació fent servir 'let'
let a=16+5
echo "El valor de \"a\" ara és $a." # Sortida: El valor de "a" ara és 21.
echo
# En un bucle for (una altra manera d'assignar valors):
echo -n "Els valors de \"a\" en el bucle són: "
for a in 7 8 9 11
do
echo -n "$a "
done
# Sortida: Els valors de "a" en el bucle són: 7 8 9 11
echo
echo
# En una instrucció 'read' (un altre tipus d'assignació):
echo -n "Introdueix un valor per \"a\" "
read a
echo "El valor de \"a\" ara és $a." # mostrarà el valor introduït
echo
exit 0
Exemple 2. Variable Assignment, plain and fancy¶
#!/bin/bash
# Demostració d'assignació elegant de valors
a=23 # Cas simple
echo $a # Sortida: 23
b=$a
echo $b # Sortida: 23
# Ara una assignació una mica més "elegant" (substitució de comanda).
a=`echo Hello!` # Assigna el resultat de la comanda
echo $a # Sortida: Hello!
# Fixat que des de la línia de comandes no funcionaria incloure l'exclamació en
#+ una substitució de comandes, doncs arrencaria el mecanisme d'historial de
#+ Bash. Aquí funciona perquè dins d'un guió, el historial queda desabilitat per
#+ defecte.
a=`ls -l /` # Assignem ara el resultat de llistar el contingut de l'arrel
# Si el mostrem sense cometes, s'eliminen espais en blanc.
echo $a # Sortida: total 112 drwxr-xr-x 2 root root 4096 jun 22 20:43 bin ...
echo
# En canvi, amb cometes es preserva la informació d'espais en blanc.
echo "$a" # Sortida: total 112
# drwxr-xr-x 2 root root 4096 jun 22 20:43 bin
# drwxr-xr-x 3 root root 4096 jun 22 20:46 boot
# ...
a=$(ls -l /) # Equivalent a l'assignació anterior
echo "$a"
exit 0
L’assignació amb $(...)
és un mètode més recent que amb \`..\`
, amb tot,
és també una forma de substitució de comanda.