Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
bash per idioti (as I am) [aggirato]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 2:12 pm    Post subject: bash per idioti (as I am) [aggirato] Reply with quote

Code:
pippo=12345
if [ $pippo != " " ]  ; then
echo ciao $pippo
fi


risultato: ciao 12345

Code:
pippo=
if [ $pippo != " " ]  ; then
echo ciao $pippo
fi


risultato: ciao

mo', qualcuno me lo spiega come se avessi tre anni, chè son troppo stupido per capirlo da solo ?

Coda


Last edited by codadilupo on Thu Jun 14, 2007 11:54 am; edited 1 time in total
Back to top
View user's profile Send private message
crisandbea
Veteran
Veteran


Joined: 03 Jul 2005
Posts: 1778
Location: BOSCO (SA) ... ma domiciliato a Bologna....

PostPosted: Wed Jun 13, 2007 2:23 pm    Post subject: Reply with quote

mi sembra alquanto strano che il primo ti dia quell'output, in quanto $mobile non esiste da nessuna parte, quindi, a meno che quel $mobile non sia $pippo, non ti stamperà mai i numeri dopo il ciao, nel secondo invece dovrebbe darti errore in quanto manca di racchiudere il pippo tra " " .

ciauz


Last edited by crisandbea on Wed Jun 13, 2007 2:29 pm; edited 2 times in total
Back to top
View user's profile Send private message
Guglie
Apprentice
Apprentice


Joined: 01 Mar 2004
Posts: 240
Location: switzerland - zürich

PostPosted: Wed Jun 13, 2007 2:24 pm    Post subject: Reply with quote

non vorrei che sia stato phpbb, ma hai lo spazio fra le virgolette nell'if ;)
_________________
A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath!
Back to top
View user's profile Send private message
drizztbsd
Retired Dev
Retired Dev


Joined: 21 Nov 2004
Posts: 278
Location: Cesano Maderno

PostPosted: Wed Jun 13, 2007 2:24 pm    Post subject: Re: bash per idioti (as I am) Reply with quote

codadilupo wrote:
Code:
pippo=12345
if [ $pippo != " " ]  ; then
echo ciao $pippo
fi


risultato: ciao 12345

Code:
pippo=
if [ $pippo != " " ]  ; then
echo ciao $pippo
fi


risultato: ciao

mo', qualcuno me lo spiega come se avessi tre anni, chè son troppo stupido per capirlo da solo ?

Coda


Code:
pippo=" "
if [ "$pippo" != " " ]  ; then
echo ciao $pippo
fi

_________________
Gentoo/Alt lead
Gentoo/*BSD and Gentoo/FreeBSD deputy lead
Paludis contributor
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 2:25 pm    Post subject: Reply with quote

con o senza spazio, non cambia nulla :-(
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 2:28 pm    Post subject: Re: bash per idioti (as I am) Reply with quote

Drizzt Do` Urden wrote:

Code:
pippo=" "
if [ "$pippo" != " " ]  ; then
echo ciao $pippo
fi


ho messo l'espressione che riepie $pippo tra virgolette, ma non cambia nulla :-(
Back to top
View user's profile Send private message
crisandbea
Veteran
Veteran


Joined: 03 Jul 2005
Posts: 1778
Location: BOSCO (SA) ... ma domiciliato a Bologna....

PostPosted: Wed Jun 13, 2007 2:29 pm    Post subject: Re: bash per idioti (as I am) Reply with quote

codadilupo wrote:
Drizzt Do` Urden wrote:

Code:
pippo=" "
if [ "$pippo" != " " ]  ; then
echo ciao $pippo
fi


ho messo l'espressione che riepie $pippo tra virgolette, ma non cambia nulla :-(


per niente intendi che non ti stampa nulla ???
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 2:31 pm    Post subject: Reply with quote

riformulo:

Code:
pippo=$(echo $riga | cut -f6 -d",")

if [ $pippo != " " ]  ; then
echo ciao $pippo
fi


sia che pippo restituisca qualcosa, sia che restituisca vuoto, non cambia nulla, anche se cambio pippo in

Code:
pippo="$(echo $riga | cut -f6 -d",")"
o l'if in
Code:
if [ $pippo != "" ]  ; then


Coda
Back to top
View user's profile Send private message
Guglie
Apprentice
Apprentice


Joined: 01 Mar 2004
Posts: 240
Location: switzerland - zürich

PostPosted: Wed Jun 13, 2007 2:32 pm    Post subject: Re: bash per idioti (as I am) Reply with quote

Quote:
ho messo l'espressione che riepie $pippo tra virgolette, ma non cambia nulla :-(

devi fare tutti e due: mettere fra virgolette e levare lo spazio
Code:
 if [ "$pippo" != "" ]

_________________
A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath!
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 2:33 pm    Post subject: Re: bash per idioti (as I am) Reply with quote

Guglie wrote:
Quote:
ho messo l'espressione che riepie $pippo tra virgolette, ma non cambia nulla :-(

devi fare tutti e due: mettere fra virgolette e levare lo spazio
Code:
 if [ "$pippo" != "" ]


è già cosi'... ho provato tutte le combinazioni ;-)

Coda
Back to top
View user's profile Send private message
drizztbsd
Retired Dev
Retired Dev


Joined: 21 Nov 2004
Posts: 278
Location: Cesano Maderno

PostPosted: Wed Jun 13, 2007 3:15 pm    Post subject: Reply with quote

ma te che devi fare esattamente?
_________________
Gentoo/Alt lead
Gentoo/*BSD and Gentoo/FreeBSD deputy lead
Paludis contributor
Back to top
View user's profile Send private message
skypjack
l33t
l33t


Joined: 05 Aug 2006
Posts: 884
Location: Italia - Firenze

PostPosted: Wed Jun 13, 2007 3:33 pm    Post subject: Reply with quote

Drizzt Do` Urden wrote:
ma te che devi fare esattamente?

Mi pare la domanda più azzeccata e il modo più veloce per risolvere, mi unisco alla richiesta... :wink:
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 4:45 pm    Post subject: Reply with quote

ho un file con i dati prelevati dall'active directory, e li devo scrivere in un file

es:

paolo.paperino,Paolino,Paperino,307,308,paolino.paperino@disney.it
zio.paperone,Zio,Paperone,307, ,zio.paperone@disney.it

ora, il terzo e quarto campo possono esistere o non esistere, nel qual caso, devo saltare la scrittura, onde evitare righe vuote. Lo script è pronto, solo, non mi riesce di capire come distinguere tra un campo vuoto e uno pieno

Coda
Back to top
View user's profile Send private message
Luca89
Advocate
Advocate


Joined: 27 Apr 2005
Posts: 2107
Location: Agrigento (Italy)

PostPosted: Wed Jun 13, 2007 4:58 pm    Post subject: Reply with quote

a me così funziona:

Code:
!/bin/sh
pippo=12345
if [ "$pippo" != "" ]; then
    echo ciao $pippo
fi
pippo=
if [ "$pippo" != "" ]; then
    echo ciao $pippo
fi


Code:
[ ~ ] $ sh Dev/bin/prova.sh
ciao 12345
[ ~ ] $


Se non va, devi salvare il contenuto della variabile $pippo quando credi che debba esser vuoto e veder cosa contiene realmente.
_________________
Running Fast!
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Wed Jun 13, 2007 6:19 pm    Post subject: Reply with quote

a parte le virgolette mi pare di capire che non sai se il campo è vuoto o meno quindi cut ti può restituire tanto " " quanto "". o mi sbaglio?
Quindi ti serve un
Code:
[ -z "$pippo" ] && pippo=" "
prima dell'if o devi usare un case o un if nidificato che sia.

[OT] la prossima volta vedi di usare qualcosa di meno antipatico dei prodotti di quegli stucchevoli idioti della disney per fare gli esempi. :wink:
E poi un pippo.c lo ho già dovuto sopportare.[/OT]
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:


Last edited by djinnZ on Wed Jun 13, 2007 6:26 pm; edited 1 time in total
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 6:26 pm    Post subject: Reply with quote

Luca89 wrote:
a me così funziona:

Code:
!/bin/sh
pippo=12345
if [ "$pippo" != "" ]; then
    echo ciao $pippo
fi
pippo=
if [ "$pippo" != "" ]; then
    echo ciao $pippo
fi


Code:
[ ~ ] $ sh Dev/bin/prova.sh
ciao 12345
[ ~ ] $


Se non va, devi salvare il contenuto della variabile $pippo quando credi che debba esser vuoto e veder cosa contiene realmente.


cosi' funziona anche a me, ma se ottengo pippo uguale a nulla, lo stampa lo stesso, ed è proprio questo il problema!

Coda


Last edited by codadilupo on Wed Jun 13, 2007 6:32 pm; edited 1 time in total
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 6:31 pm    Post subject: Reply with quote

djinnZ wrote:
a parte le virgolette mi pare di capire che non sai se il campo è vuoto o meno quindi cut ti può restituire tanto " " quanto "". o mi sbaglio?
Quindi ti serve un
Code:
[ -z "$pippo" ] && pippo=" "
prima dell'if o devi usare un case o un if nidificato che sia.


il fatto è che ho provato sia a dire, ok, la riga mi fa un cut del campo che equivale a uno spazio, qundi verifico se è diverso da uno spazio, tanto quanto ho provato a verificare se fosse diverso da vuoto, ma non cambia nulla. Lo considera sempre pieno, e mi stampa una riga vuota (o piena di uno spazio). Tra l'altro, ho già testato i vari -e, -z, -x senza successo.
Domani provero' a usare congiuntamente -z e =" " e vediamo che succede, ma non hanno funzionato mica, separati, e trovo assurdo che non sia possibile verificare semplicemente una condizione cosi' banale :-P

Quote:
[OT] la prossima volta vedi di usare qualcosa di meno antipatico dei prodotti di quegli stucchevoli idioti della disney per fare gli esempi. :wink:
E poi un pippo.c lo ho già dovuto sopportare.[/OT]


eh, usero' i personaggi di capitan harlock :-P

Coda
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Wed Jun 13, 2007 6:41 pm    Post subject: Reply with quote

allora se sei assolutamente sicuro che può essere solo vuota, caratteri senza spazio o solo spazio usa -z $variabile senza virgolette e risolvi il problema alla radice. Me ne ero dimenticato ed ora mi sono accorto che è sh e non bash. In questo caso devi fare in confronto con -z o con '' non con "" (una volta sapevo pure il perchè, ma non mi viene a mente).

[OT]già qualcosa. Anche se arcaici. Si diventa vecchiotti?! :twisted: :twisted: :twisted: [/OT]
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 6:44 pm    Post subject: Reply with quote

Code:
#!/bin/sh
riga="capitan.harlock,Capitan,Harlock,+39 20100.331, ,capitan.harlock@alkadia.com"
pippo=$(echo $riga | cut -f5 -d",")

if [ "$pippo" != " " ] ; then
echo $pippo
else
echo "la variabile è vuota"
fi


Provandolo da una bash 2.05b mi riporta:
Code:

la variabile è vuota


sia che metta uno spazio, sia che non ci sia lo spazio. E non capisco perchè sulla bash che ho al lavoro - una 3.1.7 - sia differente.... bah!

P.S.: avevo provato a mettere anche #!/bin/bash ma nulla...
Coda


Last edited by codadilupo on Wed Jun 13, 2007 6:51 pm; edited 1 time in total
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 6:51 pm    Post subject: Reply with quote

djinnZ wrote:
allora se sei assolutamente sicuro che può essere solo vuota, caratteri senza spazio o solo spazio usa -z $variabile senza virgolette e risolvi il problema alla radice. Me ne ero dimenticato ed ora mi sono accorto che è sh e non bash. In questo caso devi fare in confronto con -z o con '' non con "" (una volta sapevo pure il perchè, ma non mi viene a mente).


la variabile puo' contenere sia numeri con spazi, che nulla

Quote:
[OT]già qualcosa. Anche se arcaici. Si diventa vecchiotti?! :twisted: :twisted: :twisted: [/OT]


non sono io che son vecchio. Son gl'altri che son troppo giovani :-P

Coda
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Wed Jun 13, 2007 6:55 pm    Post subject: Reply with quote

[ -z $variabile ] è vero anche se la variabile contiene uno spazio (messo che non cambi la variabile IFS, ovviamente). Nel confronto != è come se non avessi fornito alcun parametro. [ -z $variabile ] è la stessa cosa che scrivere "test -z $variabile".
Se lavori in sh il confronto alla variabile vuota lo puoi fare solo come [ "$varibile" != '' ].

Oppure cambi quel #!/bin/sh in #!/bin/bash e puoi fare anche il confronto [ "$variabile" != "" ].

Alle volte ho il dono di essere incomprensibile.

Edit: ovviamente se capita per errore o per idiozia che possa restituirti un "capitan harlock@alkadia.com" il test [ -z $varaibile] ti restituirà errore questo intendevo.

[OT] Vecchio, vecchiaccio incartapecorito, non mi negare che un paio delle prime puntate di goldrake te lo ricordi in BN. :twisted: Ovviamente io si quindi mi permetto di sfottere. :cry: [/OT]
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 7:01 pm    Post subject: Reply with quote

quindi

Code:
if [ -z $variabile ] ; then
echo variabile
fi


deve stampare solo se la variabile è piena, giusto ?

Ci riprovero', domani al lavoro. Qui a casa funziona tutto secondo i piani :-P

Coda
Back to top
View user's profile Send private message
Guglie
Apprentice
Apprentice


Joined: 01 Mar 2004
Posts: 240
Location: switzerland - zürich

PostPosted: Wed Jun 13, 2007 7:03 pm    Post subject: Reply with quote

codadilupo wrote:
sia che metta uno spazio, sia che non ci sia lo spazio. E non capisco perchè sulla bash che ho al lavoro - una 3.1.7 - sia differente....

da me funziona con bash-3.2_p15-r1 ..
_________________
A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath!
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3135

PostPosted: Wed Jun 13, 2007 7:04 pm    Post subject: Reply with quote

djinnZ wrote:
Edit: ovviamente se capita per errore o per idiozia che possa restituirti un "capitan harlock@alkadia.com" il test [ -z $varaibile] ti restituirà errore questo intendevo.


ach! E' un problema. Quando la variabile è piena, contiene anche spazi!

Quote:
[OT] Vecchio, vecchiaccio incartapecorito, non mi negare che un paio delle prime puntate di goldrake te lo ricordi in BN. :twisted: Ovviamente io si quindi mi permetto di sfottere. :cry: [/OT]


solo perchè era in B/N il televisore di cucina, mica perchè perchè era B/N la trasmissione TV :-P !

Coda
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Wed Jun 13, 2007 7:08 pm    Post subject: Reply with quote

Ho trovato l'ultimo errore:
Code:

pippo="$(echo $riga | cut -f5 -d",")"

o usi gli apici inversi (l'unico caso in cui sono necessari). Altrimenti con alcune versioni ti ritrovi una variabile vuota se il risultato è spazio.

E poi vanno a dire che la bourne shell è facile da usare e soprattutto è ben documentata... :evil:

[/OT]nella prima trasmissione di goldrake un paio di episodi li trasmisero in BN tanto i televisori a colori non erano tanto diffusi e se ne accorsero in pochi.[/OT]
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum