.dsy:it. Pages (5): « 1 [2] 3 4 5 »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- [Misteri] -e si nasconde (http://www.dsy.it/forum/showthread.php?threadid=21078)


Posted by Alf on 26-08-2005 14:36:

Ah ultima cosa lally se il problema e' proprio "stampare SOLO -e " ho una soluzione anche se non e' il massimo :)

__________________
(\ /)
( . .)
c('')('') This is Bunny!
Help her succeed in world domination by copy and pasting her in
your signature.


Posted by lallyblue on 26-08-2005 14:39:

tipo?

io semplicemente facevo un
if echo $variabile | grep <regexp>
then
command
else
command
fi

boh mi sembrava la soluzione +semplice... :\

si può adattare?

__________________
*** Proposta di legge di iniziativa popolare: "8x1000 ALLA RICERCA"
Informati e firma la petizione! E' nel tuo interesse! ;)

*** Browse my dA gallery ! ;)
***In medio stat virtus


Posted by Alf on 26-08-2005 14:43:

Originally posted by lallyblue
tipo?

io semplicemente facevo un
if echo $variabile | grep <regexp>
then
command
else
command
fi

boh mi sembrava la soluzione +semplice... :\

si può adattare?


con il case:


case "$variabile" in

"-e"|"-q"|"-u"|"-uq")
command1
command2
;;

*)
command3

;;
esac


Se il valore $variabile si trova fra -e -q -u -uq esegue i comandi command1 command2 in tutti gli altri casi (*) esegue command 3


per STAMPARE -e fai cosi' ...

echo \"-e\" | cut -c2,3


Non e' bellissimo ... ma funziona :)

__________________
(\ /)
( . .)
c('')('') This is Bunny!
Help her succeed in world domination by copy and pasting her in
your signature.


Posted by DeepBlue on 26-08-2005 14:45:

Originally posted by ak47
la RE che soddisfa la tua richiesta è [-e|-q|-ue|-uq]


in bash con *grep mi sa che così non funziona.

Meglio che passi tutto a egrep così:

code:
egrep "(^-)(e|q|ue|uq)"


Per il problema del -e..boh?

edit: anche io avevo pensato ad una soluzione simile a quella di alf (per l'assegnamento di -e) e mi sa che è l'unica strada, a meno di sostituire -e con qualcosaltro :D:D:D

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by lallyblue on 26-08-2005 14:59:

l'opzione purtroppo non posso cambiarla, è quella che devo passare ad un programma x avere un certo risultato.
a questo punto userò l'egrep che mi hai suggerito, solo mi suonava strano che un comando come echo avesse tali limitazioni...
non c'è un comando alternativo all'echo x mostrare il contenuto delle variabili, vero?

__________________
*** Proposta di legge di iniziativa popolare: "8x1000 ALLA RICERCA"
Informati e firma la petizione! E' nel tuo interesse! ;)

*** Browse my dA gallery ! ;)
***In medio stat virtus


Posted by Alf on 26-08-2005 15:06:

Originally posted by DeepBlue
in bash con *grep mi sa che così non funziona.

Meglio che passi tutto a egrep così:

code:
egrep "(^-)(e|q|ue|uq)"


Per il problema del -e..boh?

edit: anche io avevo pensato ad una soluzione simile a quella di alf (per l'assegnamento di -e) e mi sa che è l'unica strada, a meno di sostituire -e con qualcosaltro :D:D:D


ma scusa ... fare un if in pipe a un egrep e' simulare un case ... O_o;; perche' simularlo quando c'e' ?! :)

__________________
(\ /)
( . .)
c('')('') This is Bunny!
Help her succeed in world domination by copy and pasting her in
your signature.


Posted by lallyblue on 26-08-2005 15:11:

beh perché di solito il case lo applico quando ho tante opzioni e diventerebbe difficile usare tanti if/then/else in cascata. visto che qui o l'opzione è tra quelle 4 (e allora esegue il comando) oppure è qualsiasi altra cosa (e allora stampa un mex d'errore) mi sembrava + logico usare un if/then/else... ma non sono una buona programmatrice quindi è facile che mi sbagli... ;)

__________________
*** Proposta di legge di iniziativa popolare: "8x1000 ALLA RICERCA"
Informati e firma la petizione! E' nel tuo interesse! ;)

*** Browse my dA gallery ! ;)
***In medio stat virtus


Posted by DeepBlue on 26-08-2005 15:14:

Originally posted by lallyblue
non c'è un comando alternativo all'echo x mostrare il contenuto delle variabili, vero?

ho paura di no :/

Originally posted by Alf
ma scusa ... fare un if in pipe a un egrep e' simulare un case ... O_o;; perche' simularlo quando c'e' ?!

E che ne so io? :D
Lally era partita dicendo che stava usando grep ed egrep, io non sapendo su cosa stesse lavorando, mi sono adeguato :D

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by Alf on 26-08-2005 15:28:

Originally posted by lallyblue
beh perché di solito il case lo applico quando ho tante opzioni e diventerebbe difficile usare tanti if/then/else in cascata. visto che qui o l'opzione è tra quelle 4 (e allora esegue il comando) oppure è qualsiasi altra cosa (e allora stampa un mex d'errore) mi sembrava + logico usare un if/then/else... ma non sono una buona programmatrice quindi è facile che mi sbagli... ;)


Beh sono equivalenti alla fine.

E cmq questo e' il caso in cui hai piu' scelte .. il fatto che 4 scelte facciano fare la stessa azione e' irrilevante :)

Cmq dentro l'if devi richiamare il grep :)

Il case lo fa da solo il parsing

Cmq alla fine sta a te decidere ;)



Ci sono altri comandi al posto dell'echo ma danno tutti lo stesso problema

Printf per esempio :)

__________________
(\ /)
( . .)
c('')('') This is Bunny!
Help her succeed in world domination by copy and pasting her in
your signature.


Posted by lallyblue on 26-08-2005 16:17:

fico... :roll:

grazie mille cmq!

__________________
*** Proposta di legge di iniziativa popolare: "8x1000 ALLA RICERCA"
Informati e firma la petizione! E' nel tuo interesse! ;)

*** Browse my dA gallery ! ;)
***In medio stat virtus


Posted by Alf on 26-08-2005 16:34:

Originally posted by lallyblue
fico... :roll:

grazie mille cmq!


Anzi no ..
Ti ho trovato la soluzione

code:
pippo=-e printf "%s\n" $pippo


Cosi' stampa tutto cio' che vuoi :D

__________________
(\ /)
( . .)
c('')('') This is Bunny!
Help her succeed in world domination by copy and pasting her in
your signature.


Posted by DeepBlue on 26-08-2005 17:20:

grande Alf :D

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by Viry on 26-08-2005 17:26:

Senza diventare matti, c'e' getopts per fare cio':
Nell'esempio lo script accetta le opzioni -h -a -b -c

code:
while getopts "habc" opt; do case $opt in h ) visualizzo_help ;; a) eseguo_una_cosa;; b ) faccio_altra_cosa;; .... esac done

Molto piu' comodo, no?
Qui la man page:
http://www.ss64.com/bash/getopts.html
e un po' di esempietti:
http://www.linuxlaboratory.org/27.php

__________________
When once you have tasted flight, you will walk the earth, forever more, with your eyes turned skyward. For there you have been, and there you long to return.

“Dovere, tempo, destino, tutto tende a separarci e, di fatto, ci separa. Ma il sentimento non conosce frontiere e mi unisce a te come se avessi sempre la mia mano sulla tua"


Posted by Viry on 26-08-2005 17:40:

In ogni caso, per controllare su una stringa e' uguale a un'altra, si usa if test:
in questo caso voglio che lo script dice gatto se lanciato con -e

code:
if test $1 = "-e"; then echo "gatto"; fi


viry@nocciolina ~ $ sh prova.sh -e
gatto
viry@nocciolina ~ $ sh prova.sh -i
viry@nocciolina ~ $

__________________
When once you have tasted flight, you will walk the earth, forever more, with your eyes turned skyward. For there you have been, and there you long to return.

“Dovere, tempo, destino, tutto tende a separarci e, di fatto, ci separa. Ma il sentimento non conosce frontiere e mi unisce a te come se avessi sempre la mia mano sulla tua"


Posted by lallyblue on 29-08-2005 18:53:

Originally posted by Viry
Senza diventare matti, c'e' getopts per fare cio':
Nell'esempio lo script accetta le opzioni -h -a -b -c
code:
while getopts "habc" opt; do case $opt in h ) visualizzo_help ;; a) eseguo_una_cosa;; b ) faccio_altra_cosa;; .... esac done

Molto piu' comodo, no?
Qui la man page:
http://www.ss64.com/bash/getopts.html
e un po' di esempietti:
http://www.linuxlaboratory.org/27.php


x curiosità: ma questo funziona anche quando ho opzioni tipo -ue, -uq ovvero con + lettere assieme? (sì so che -ue è come dire -u -e ma se l'utente inserisce -ue non va + bene x lo script, giusto? )

cmq lo tengo presente x la prossima occasione... x questa volta ho risolto con il case, effettivamente è quello che rende meglio :)

ora sto litigando un po' con il grep...
dal man mi sembra di aver capito che basta usare anche qui le regexp...
diciamo che ho un file "file.txt" che contiene una riga con "ciao pippo blah blah" e un'altra riga con "www.pippo.pip"
con il comando
cat file.txt | egrep \<pippo\>
mi aspetto di trovare solo la riga relativa a "ciao pippo blah blah" ovvero solo quella contornata da spazi, giusto?
ho provato anche \bpippo\b..
ma in entrambi i casi mi stampa entrambe le righe... ma se voglio la stringa esatta, contornata da spazi, che devo fa?!? :pensa:
tnxtnx!

__________________
*** Proposta di legge di iniziativa popolare: "8x1000 ALLA RICERCA"
Informati e firma la petizione! E' nel tuo interesse! ;)

*** Browse my dA gallery ! ;)
***In medio stat virtus


All times are GMT. The time now is 14:51. Pages (5): « 1 [2] 3 4 5 »
Show all 68 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.