Bash scripting - espansioni quotabili: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
(- template "Versioni compatibili")
Riga 9: Riga 9:


Modificatori:
Modificatori:
* <code>${#var}</code> ritorna il numero di caratteri della stringa contenuta in $var. Espande sempre a una singola stringa;
* <code>${#var}</code> ritorna il numero di caratteri della stringa contenuta in ${var}. Espande sempre a una singola stringa;
* <code>${!var}</code> (non ''POSIX'') ritorna il contenuto della variabile, il cui nome è contenuto in $var (accesso indiretto);
* <code>${!var}</code> (non ''POSIX'') ritorna il contenuto della variabile, il cui nome è contenuto in ${var} (accesso indiretto);
* <code>${var:-stringa}</code> (valore di default, se nulla) ritorna il contenuto della variabile, se definita e non è nulla, altrimenti espande stringa che può essere anche un'altra variabile;
* <code>${var:-stringa}</code> (valore di default, se nulla) ritorna il contenuto della variabile, se definita e non è nulla, altrimenti espande stringa, che può essere anche un'altra variabile. Non cambia il contenuto di ${var};
* <code>${var-stringa}</code> (valore di default, se non definita) ritorna il contenuto della variabile, se definita (anche se nulla), altrimenti espande stringa, che può anche essere un'altra variabile;
* <code>${var-stringa}</code> (valore di default, se non definita) ritorna il contenuto della variabile, se definita (anche se nulla), altrimenti espande stringa, che può anche essere un'altra variabile. Non cambia il contenuto di ${var};
* modificatori di assegnazione e valori alternativi, non trattati perché sconsigliati per la leggibilità del codice e non sono fondamentali. Si noti invece che l'uso dell'espansione di parametro con valore di default è l'unico modo per distinguere una variabile non definita da una nulla;
* modificatori di assegnazione e valori alternativi, non trattati perché sconsigliati per la leggibilità del codice e non sono fondamentali. Si noti invece che l'uso dell'espansione di parametro con valore di default è l'unico modo per distinguere una variabile non definita da una nulla;
* manipolatori di stringa (rimozione, sostituzione, trasformazione in uppercase/lowercase), trattati tra breve.
* manipolatori di stringa (rimozione, sostituzione, trasformazione in uppercase/lowercase), trattati tra breve.
Riga 20: Riga 20:
var2=${var-stringa}  # assegna stringa (perché $var non è definita)
var2=${var-stringa}  # assegna stringa (perché $var non è definita)
printf %s\\n "$var2"  # stampa: stringa
printf %s\\n "$var2"  # stampa: stringa
var=""                # assegna stringa nulla
var=""                # assegna a var una stringa nulla
var2=${var-stringa}  # assegna il contenuto (nullo) di $var (perché è definita)
var2=${var-stringa}  # assegna il contenuto (nullo) di $var (perché è definita)
printf %s\\n "$var2"  # stampa una riga vuota
printf %s\\n "$var2"  # stampa una riga vuota
var2=${var:-stringa}  # assegna stringa (perché $var è nulla)
var2=${var:-stringa}  # assegna stringa (perché $var è nulla)
printf %s\\n "$var2"  # stampa: stringa
printf %s\\n "$var2"  # stampa: stringa
rif="var"             # rif contiene il nome (senza $) di $var
rif="var2"           # rif contiene il nome (senza $) di $var2
var2=${!rif}         # equivalente a: var2=$var
var=${!rif}           # equivalente a: var=$var2
printf %s\\n "$var2" # stampa: stringa
printf %s\\n "$var"   # stampa: stringa
printf %s\\n ${#var2} # stampa: 7 (la lunghezza di "stringa")
printf %s\\n ${#var} # stampa: 7 (la lunghezza di "stringa")
</pre>
</pre>