superkappa Inviato 7 Febbraio 2011 Segnala Condividi Inviato 7 Febbraio 2011 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 Altre opzioni di condivisione...
canemacchina00 Inviato 8 Febbraio 2011 Segnala Condividi Inviato 8 Febbraio 2011 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?? :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 Altre opzioni di condivisione...
superkappa Inviato 8 Febbraio 2011 Autore Segnala Condividi Inviato 8 Febbraio 2011 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 8 Febbraio 2011 Segnala Condividi Inviato 8 Febbraio 2011 Per informazioni sulle regular expression della shell digita "man re_format". In questo caso non saprei aiutarti, ma mi viene il dubbio che la regex la voglia tra virgolette. Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
DaD Inviato 8 Febbraio 2011 Segnala Condividi Inviato 8 Febbraio 2011 E proprio sbagliata la sintassi di utilizzo, per quello non va. Riguardati un pò http://goo.gl/XytD7 Skype: dadspecial | My Blog: JollyChar Link al commento Condividi su altri siti Altre opzioni di condivisione...
superkappa Inviato 8 Febbraio 2011 Autore Segnala Condividi Inviato 8 Febbraio 2011 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
canemacchina00 Inviato 9 Febbraio 2011 Segnala Condividi Inviato 9 Febbraio 2011 Come dicevo prima, adesso non ricordo esattamente la sintassi corretta per l'espressione regolare su shell. Ogni linguaggio ha una sintassi sua leggermente diversa dalle altre. La mia era, se così si può definire, una sintassi "universale", ovvero quella che troveresti su un testo che parla di regexp! Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.