Bash tips: differenze tra le versioni

m
(accesso al contenuto di una variabile)
Riga 191: Riga 191:


In Bash ogni variabile (di default) è trattata come una stringa, e un nome di variabile ammette soltanto caratteri alfabetici (maiuscoli e minuscoli), l'underscore "_" e numeri (questi ultimi purché non in prima posizione).
In Bash ogni variabile (di default) è trattata come una stringa, e un nome di variabile ammette soltanto caratteri alfabetici (maiuscoli e minuscoli), l'underscore "_" e numeri (questi ultimi purché non in prima posizione).
Si indica dunque con <code>${nome}</code> oppure con la forma abbreviata <code>$nome</code>. Si noti che la forma abbreviata considera il nome della variabile come composto da tutti i caratteri validi incontrati (per esempio "$nome$cognome" è equivalente a "${nome}${cognome}", ma "$nome_$cognome" non lo è a "${nome}_${cognome}" perché "nome_" sarebbe un nome di variabile valido). In caso di concatenazione di variabili è preferibile accedere alle variabili con le graffe, o in alternativa delimitarle da un carattere "\" (per esempio: "$nome\_$cognome" corrisponde a "${nome}_${cognome}).
Si indica dunque con <code>${nome}</code> oppure con la forma abbreviata <code>$nome</code>. Si noti che la forma abbreviata considera il nome della variabile come composto da tutti i caratteri validi incontrati (per esempio <code>"$nome$cognome"</code> è equivalente a <code>"${nome}${cognome}"</code>, ma <code>"$nome_$cognome"</code> non lo è a <code>"${nome}_${cognome}"</code> perché <code>nome_</code> sarebbe un nome di variabile valido). In caso di concatenazione di variabili è preferibile accedere alle variabili con le graffe, o in alternativa delimitare dalle virgolette o da un carattere '''\''' (per esempio: <code>"$nome"_"$cognome"</code> e <code>"$nome\_$cognome"</code> corrisponde a <code>"${nome}_${cognome}"</code>).


È bene notare che quando si accede al contenuto di una variabile senza quotarla, questa può essere trasformata in più di una singola stringa, in base agli spazi contenuti, e perfino in "niente" se è vuota ("niente" proprio come se non presente nel codice). Se invece si vuole sempre considerare il contenuto della variabile come una singola stringa, è necessario accederla quotata (tra virgolette), ossia con "$variabile" oppure "${variabile}". Questo fatto è di particolare importanza quando si utilizza la variabile in una condizione ([ ... ], test ..., ecc...), perché la variabile potrebbe essere sostituita da più di una stringa o perfino da nessuna; e anche quando la si passa a un comando, in particolare se agisce su un file indicato dalla variabile, che potrebbe venir trattato come più di un file. L'utilità nel non quotarla d'altra parte consiste nella possibilità di assegnare tutte le opzioni da passare a un comando a una singola variabile, accedendovi in seguito per passargli tutte le stringhe (o nessuna stringa, se lasciata vuota) in una volta sola.
È bene notare che quando si accede al contenuto di una variabile senza quotarla, questa può essere trasformata in più di una singola stringa, in base agli spazi contenuti, e perfino in "niente" se è vuota ("niente" proprio come se non presente nel codice). Se invece si vuole sempre considerare il contenuto della variabile come una singola stringa, è necessario accederla quotata (tra virgolette), ossia con "$variabile" oppure "${variabile}". Questo fatto è di particolare importanza quando si utilizza la variabile in una condizione ([ ... ], test ..., ecc...), perché la variabile potrebbe essere sostituita da più di una stringa o perfino da nessuna; e anche quando la si passa a un comando, in particolare se agisce su un file indicato dalla variabile, che potrebbe venir trattato come più di un file. L'utilità nel non quotarla d'altra parte consiste nella possibilità di assegnare tutte le opzioni da passare a un comando a una singola variabile, accedendovi in seguito per passargli tutte le stringhe (o nessuna stringa, se lasciata vuota) in una volta sola.


Il nome dentro le graffe può essere seguito da un modificatore che manipola la variabile, ad esempio:
Il nome dentro le graffe inoltre può essere seguito da un modificatore che manipola la variabile, ad esempio:


  VAR="stringa-di-esempio"
  VAR="stringa-di-esempio"
3 581

contributi