<Precedenti | Contenuti | Succ.>
Conversione dei casi
Versioni recenti di bash supportano la conversione maiuscola/minuscola delle stringhe. bash
ha quattro espansioni di parametri e due opzioni per dichiarare comando per supportarlo.
A cosa serve quindi la conversione tra maiuscole e minuscole? Oltre all'ovvio valore estetico, ha un ruolo importante nella programmazione. Consideriamo il caso di una ricerca in un database. Immaginiamo che un utente abbia inserito una stringa in un campo di input dati che vogliamo ricercare in un database. È possibile che l'utente inserisca il valore in maiuscolo, in minuscolo o in una combinazione di entrambi. Di certo non vogliamo popolare il nostro database con ogni possibile permutazione di maiuscole e minuscole. Cosa fare?
Un approccio comune a questo problema è quello di normalizzare l'input dell'utente. Cioè, convertirlo
in una forma standardizzata prima di tentare la ricerca nel database. Possiamo farlo convertendo tutti i caratteri nell'input dell'utente in minuscolo o maiuscolo e assicurandoci che le voci del database siano normalizzate allo stesso modo.
. dichiarare Il comando può essere utilizzato per normalizzare le stringhe in maiuscolo o minuscolo. Utilizzando dichiarare, possiamo forzare una variabile a contenere sempre il formato desiderato, indipendentemente da cosa le venga assegnato:
#! / Bin / bash
# ul-declare: dimostra la conversione tra maiuscole e minuscole tramite declare declare -u upper
dichiara -l inferiore
se [[ $1 ]]; allora
superiore="$1" inferiore="$1" echo $superiore echo $inferiore
fi
#! / Bin / bash
# ul-declare: dimostra la conversione tra maiuscole e minuscole tramite declare declare -u upper
dichiara -l inferiore
se [[ $1 ]]; allora
superiore="$1" inferiore="$1" echo $superiore echo $inferiore
fi
Nello script sopra, usiamo dichiarare per creare due variabili, superiore e abbassarlaAssegniamo il valore del primo argomento della riga di comando (parametro posizionale 1) a ciascuna delle variabili e poi le visualizziamo sullo schermo:
[io@linuxbox~]$ ul-dichiarare aBc
ABC
abc
[io@linuxbox~]$ ul-dichiarare aBc
ABC
abc
Come possiamo vedere, l'argomento della riga di comando ("aBc") è stato normalizzato.
Oltre dichiarare, ci sono quattro espansioni di parametri che eseguono la conversione maiuscolo/minuscolo:
Tabella 34-1: Espansioni dei parametri di conversione dei casi
Formato Risultato
Formato Risultato
${parametro,,} Espandi il valore di parametro in minuscolo.
${parametro,} Espandi il valore di parametro cambiando solo il primo
carattere in minuscolo.
${parametro^^} Espandi il valore di parametro in tutte le lettere maiuscole.
${parametro^} Espandi il valore di parametro cambiando solo il primo
carattere in maiuscolo (capitalizzazione).
Ecco uno script che dimostra queste espansioni:
#! / Bin / bash
# ul-param: dimostra la conversione dei casi tramite l'espansione dei parametri se [[ $1 ]]; quindi
eco ${1,,}
echo ${1,} echo ${1^^} echo ${1^}
fi
#! / Bin / bash
# ul-param: dimostra la conversione dei casi tramite l'espansione dei parametri se [[ $1 ]]; quindi
eco ${1,,}
echo ${1,} echo ${1^^} echo ${1^}
fi
Ecco lo script in azione:
[io@linuxbox~]$ ul-param aBc
abc aBc ABC
ABC
[io@linuxbox~]$ ul-param aBc
abc aBc ABC
ABC
Di nuovo, elaboriamo il primo argomento della riga di comando e produciamo le quattro varianti supportate dalle espansioni dei parametri. Mentre questo script utilizza il primo parametro posizionale, parametro può essere qualsiasi stringa, variabile o espressione stringa.