Pagina 1 di 1

[RISOLTOBASH] Controllo stringhe con determinati intervalli.

Inviato: mercoledì 25 aprile 2012, 21:47
da f4bry90
Salve di nuovo,
sempre una domanda semplice. Vorrei sapere come faccio a controllare se una stringa sia uguale ad un numero determinato di lettere con una sola condizione.

Esempio:

Codice: Seleziona tutto

var="$1"

if [[ "$var" == "s" -a "$var" ==  "S" -a ecc. ecc. ]]; then
    fai qualcosa
else
    fai qualcos'altro
fi
Ecco vorrei raggruppare la condizione dell'if. Grazie mille! :)

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: giovedì 26 aprile 2012, 0:44
da crap0101
vuoi testare se $var appartiene a un certo set?
Chiedo perchè quell'if mi lascia un pò perplesso.

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: giovedì 26 aprile 2012, 1:18
da f4bry90
Scusa ho sbagliato le condizioni, comunque ne sono due di condizioni:

1.

Codice: Seleziona tutto

while [[ "$1" != "s" -a "$1" != "S" -a "$1" != "n" -a "$1" != "N" ]]; do
    qualcosa
done
2.

Codice: Seleziona tutto

if [[ "$1" == "s" -o "$1" == "S" ]]; then
    qualcosa
fi
grazie.

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: giovedì 26 aprile 2012, 21:30
da crap0101
tipo così?

Codice: Seleziona tutto

crap0101@crap0101-M:~$ var=s
crap0101@crap0101-M:~$ [[ $var =~ ^[sSrRtT]$ ]] && echo ok
ok

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: venerdì 27 aprile 2012, 20:16
da f4bry90
Si, il codice che mi hai dato tu funziona grazie! Puoi spiegarmi come funzionano quei simboli?

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: venerdì 27 aprile 2012, 22:44
da crap0101
in sintesi,

Codice: Seleziona tutto

=~
serve per fare confronti usando espressioni regolari, quindi

Codice: Seleziona tutto

VAR =~ REGEX

ti dice se la regex matcha VAR.

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: venerdì 27 aprile 2012, 23:50
da f4bry90
Ok, ho capito. Invece riguardo:

Codice: Seleziona tutto

 ^[sSrRtT]$ 
?

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: sabato 28 aprile 2012, 2:20
da crap0101
quella è la regex, matcha una stringa monocarattere tra quelli compresi nelle parentesi quadre. Ci sono varie notazioni, se non hai idea di cosa si tratta inizia da qua: http://it.wikipedia.org/wiki/Espressione_regolare
e in particolare per bash: http://tldp.org/LDP/abs/html/x17000.html

Re: [BASH] Controllo stringhe con determinati intervalli.

Inviato: sabato 28 aprile 2012, 11:16
da f4bry90
Grazie mille! :)