[RISOLTOBASH] Controllo stringhe con determinati intervalli.

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[RISOLTOBASH] Controllo stringhe con determinati intervalli.

Messaggioda f4bry90 » mercoledì 25 aprile 2012, 21:47

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! :)
Ultima modifica di f4bry90 il sabato 28 aprile 2012, 11:16, modificato 1 volta in totale.
f4bry90 Non specificato
Prode Principiante
 
Messaggi: 183
Iscrizione: gennaio 2010
Località: Pescara
Distribuzione: Ubuntu 12.10 LTS 32bit i686
Desktop: gnome-shell

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda crap0101 » giovedì 26 aprile 2012, 0:44

vuoi testare se $var appartiene a un certo set?
Chiedo perchè quell'if mi lascia un pò perplesso.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7087
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda f4bry90 » giovedì 26 aprile 2012, 1:18

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.
f4bry90 Non specificato
Prode Principiante
 
Messaggi: 183
Iscrizione: gennaio 2010
Località: Pescara
Distribuzione: Ubuntu 12.10 LTS 32bit i686
Desktop: gnome-shell

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda crap0101 » giovedì 26 aprile 2012, 21:30

tipo così?
Codice: Seleziona tutto
crap0101@crap0101-M:~$ var=s
crap0101@crap0101-M:~$ [[ $var =~ ^[sSrRtT]$ ]] && echo ok
ok
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7087
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda f4bry90 » venerdì 27 aprile 2012, 20:16

Si, il codice che mi hai dato tu funziona grazie! Puoi spiegarmi come funzionano quei simboli?
f4bry90 Non specificato
Prode Principiante
 
Messaggi: 183
Iscrizione: gennaio 2010
Località: Pescara
Distribuzione: Ubuntu 12.10 LTS 32bit i686
Desktop: gnome-shell

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda crap0101 » venerdì 27 aprile 2012, 22:44

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.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7087
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda f4bry90 » venerdì 27 aprile 2012, 23:50

Ok, ho capito. Invece riguardo:
Codice: Seleziona tutto
 ^[sSrRtT]$
?
f4bry90 Non specificato
Prode Principiante
 
Messaggi: 183
Iscrizione: gennaio 2010
Località: Pescara
Distribuzione: Ubuntu 12.10 LTS 32bit i686
Desktop: gnome-shell

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda crap0101 » sabato 28 aprile 2012, 2:20

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
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7087
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Controllo stringhe con determinati intervalli.

Messaggioda f4bry90 » sabato 28 aprile 2012, 11:16

Grazie mille! :)
f4bry90 Non specificato
Prode Principiante
 
Messaggi: 183
Iscrizione: gennaio 2010
Località: Pescara
Distribuzione: Ubuntu 12.10 LTS 32bit i686
Desktop: gnome-shell


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 1 ospite