Ignora il caso dall'input dell'utente


1

Sto provando a scrivere uno script per catturare l'input dell'utente. La sceneggiatura dovrebbe ignorare il caso.

Considera questo script foo.sh:

if [ $1 == "string" ]; then
  echo true
else
  echo false
fi

Se l'input di foo.sh è STRING o StRiNg il risultato sarà falso.

Come posso ignorare il caso nel if condizione?


3
Dovresti usare [[ "$1" == "string" ]] invece di [ $1 == "string" ]. Altrimenti ti metteresti nei guai, se $1 contiene spazi o è vuoto.
mpy

Risposte:


3

Supponendo che tu stia usando bash 4.0+:

${1,,}

Altrimenti, tr o awk dovrebbe funzionare:

var=$(echo "$1" | awk '{print tolower($0)}')
var=$(echo "$1" | tr '[:upper:]' '[:lower:]')

Sintesi:

  • Awk prende in input e semplicemente stampa $0 (l'intera linea di input) dopo aver usato il built-in tolower() funzione.

  • Tr sembra abbastanza auto esplicativo, ma fammi sapere se hai domande su di esso.


meglio da citare "$a"
glenn jackman

1

declare ha una funzione minuscola:

declare -l str=$1
[[ $str = "string" ]] && echo true || echo false

C'è anche il nocasematch opzione shell che potrebbe essere utilizzata.
gniourf_gniourf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.