Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
---|---|---|
Indietro | Capitolo 4. Introduzione alle variabili ed ai parametri | Avanti |
è l'operatore di assegnamento (nessuno spazio prima e dopo)
Da non confondere con = e -eq, che servono per le verifiche! È da notare che l'= può essere sia l'operatore di assegnamento che quello di verifica. Dipende dal contesto in cui si trova. |
Esempio 4-2. Assegnamento esplicito di variabile
#!/bin/bash # Variabili nude echo # Quando una variabile è "nuda", cioè, senza il '$' davanti? # Durante l'assegnamento, ma non nella referenziazione. # Assegnamento a=879 echo "Il valore di \"a\" è $a." # Assegnamento con l'utilizzo di 'let' let a=16+5 echo "Il valore di \"a\" ora è $a." echo # In un ciclo 'for' (in realtà, un tipo di assegnamento mascherato): echo -n "I valori di \"a\" nel ciclo sono: " for a in 7 8 9 11 do echo -n "$a " done echo echo # In un enunciato 'read' (un altro tipo di assegnamento): echo -n "Immetti il valore di \"a\" " read a echo "Il valore di \"a\" ora è $a." echo exit 0 |
Esempio 4-3. Assegnamento di variabile, esplicito e indiretto
#!/bin/bash a=23 # Caso comune echo $a b=$a echo $b # Ora in un modo un po' più raffinato (sostituzione di comando). a=`echo Ciao!` # Assegna il risultato del comando 'echo' ad 'a' echo $a # Nota: l'inserimento del punto esclamativo (!) all'interno del costrutto #+ di sostituzione di comando non funziona da riga di comando, #+ perché il ! attiva il "meccanismo di cronologia" della shell Bash. #+ All'interno di uno script, però, #+ le funzioni di cronologia sono disabilitate. a=`ls -l` # Assegna il risultato del comando 'ls -l' ad 'a' echo $a # Senza l'utilizzo del quoting vengono eliminate #+ le tabulazioni ed i ritorni a capo. echo echo "$a" # L'utilizzo del quoting preserva gli spazi. # (Vedi il capitolo sul "Quoting.") exit 0 |
Assegnamento di variabile utilizzando $(...) (metodo più recente rispetto agli apici inversi). In realtà si tratta di una forma particolare di sostituzione di comando.
# Dal file /etc/rc.d/rc.local R=$(cat /etc/redhat-release) arch=$(uname -m) |