Vai al contenuto

Regular expressions


superkappa

Messaggi raccomandati

Visto che grazie a MacMomo ho capito che in questa sezione siete molto ferrati per quanto riguarda lo scripting Unix volevo chiedere come faccio a controllare che l'inserimento di un dato da tastiera sia una regula espression.

Ditemi dove sbaglio:

voglio che il codice inserito sia del tipo a.b:un_tot_di_cifre_indefinito-k

while [ !expr "$riga" *.*:*-* ]
do
 echo "Inserisci il codice:"
 read riga
done

Link al commento
Condividi su altri siti

A parte il fatto che non capisco esattamente cosa intendi quando dici che vorresti controllare che "l'inserimento di un dato da tastiera sia una regula espression", perché non usi proprio una regular expression per controllare l'iput?? :D:ghghgh:

Ora non ricordo esattamente la sintassi delle regular expression di sh, ma prova ad usare qualcosa del genere:

a.b:[0-9]*-k

così ho scritto una espressione regolare che chiede (guarda quello che è tra virgolette):

-carattere "a", seguito da ".", "b", ":", "un qualsiasi numero di cifre numeriche, anche nessuna", "-", "k".

Alla fine quello che leggi è una stringa per lo script!

Link al commento
Condividi su altri siti

Ok, ma se scrivo:

[font=monospace]while [ !expr "$riga" [/font]a.b:[0-9]*-k[font=monospace] ]
do
 echo "Inserisci il codice:"
 read riga
done[/font]

il terminale mi risponde:

$ ./a.sh 
./a.sh: line 1: [: : binary operator expected

Non capisco come devo effettuare questo controllo.

C'è da impazzire.:D

Link al commento
Condividi su altri siti

mi aiuteresti a mettere l'agromento all'interno del while?

Non riesco a capire come esprimere il controllo.

mi andrebbe bene controllare anche che in mezzo alla frase ci sia un punto.

che $riga sia del tipo *.*

Non riesco a capire come controllarlo ed ho già sfogliato centosessantamila guide.

Tutte le guide hanno come input sempre e solo numeri. :ciao:

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...