Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Shell script linux
Forum - Altri Linguaggi - Shell script linux

Avatar
campello.davide (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2011

Segnala al moderatore
Postato alle 11:28
Giovedì, 09/10/2014
Buongiorno a tutti,
devo realizzare un semplice script sh linux e ho questo problema:

in una variabile ho un testo ababstanza lungo, ad esemio questo:

Codice sorgente - presumibilmente Plain Text

  1. </param-value></params></operation><error code="ERR-M001"><msg>errore prova</msg></error></operation-result>



che è il risultato di una chiamata curl.

Io devo estrarre e stampare a video solo ERR-M001, che è il codice di errore e che cambia di volta in volta a seconda appunto dell'errore.
Come posso fare?

Grazie!

PM Quote
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 11:38
Giovedì, 09/10/2014

PM Quote
Avatar
campello.davide (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2011

Segnala al moderatore
Postato alle 13:40
Giovedì, 09/10/2014
Grazie :)
appena risolvo posto la soluzione

PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 14:20
Giovedì, 09/10/2014
Se il codice che vuoi ottenere si trova sempre sull'attributo code di <error>, non c'è bisogno di parsare l'XML, puoi usare sed e le espressioni regolari:
Codice sorgente - presumibilmente Plain Text

  1. curl ... | sed -n '/error/s/.*<error [^>]*code="\([^"]*\)".*/\1/p'


PM Quote
Avatar
campello.davide (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2011

Segnala al moderatore
Postato alle 14:36
Giovedì, 09/10/2014
Grazie mille, è quello di cui avevo bisogno!
ultima cosa: come posso mettere il codice di errore che estraggo in una variabile?

Grazie!

PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 15:49
Giovedì, 09/10/2014
Puoi assegnare un valore a una variabile con:
Codice sorgente - presumibilmente Plain Text

  1. variabile=valore


Per ottenere una stringa contenente lo standard output di un comando, si usa $(comando) o `comando` (le differenze tra i due sono minime). Dunque:
Codice sorgente - presumibilmente Plain Text

  1. variabile=$(comando)


PM Quote
Avatar
campello.davide (Normal User)
Newbie


Messaggi: 5
Iscritto: 18/07/2011

Segnala al moderatore
Postato alle 15:56
Giovedì, 09/10/2014
Fantastico!
grazie mille!

ciao :)

PM Quote