View previous topic :: View next topic |
Author |
Message |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 2:12 pm Post subject: bash per idioti (as I am) [aggirato] |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
crisandbea Veteran
![Veteran Veteran](/images/ranks/rank_rect_5_vet.gif)
Joined: 03 Jul 2005 Posts: 1778 Location: BOSCO (SA) ... ma domiciliato a Bologna....
|
Posted: Wed Jun 13, 2007 2:23 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
Guglie Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
![](images/avatars/33683012042171e97ee913.jpg)
Joined: 01 Mar 2004 Posts: 240 Location: switzerland - zürich
|
Posted: Wed Jun 13, 2007 2:24 pm Post subject: |
|
|
non vorrei che sia stato phpbb, ma hai lo spazio fra le virgolette nell'if ![Wink ;)](images/smiles/icon_wink.gif) _________________ A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
drizztbsd Retired Dev
![Retired Dev Retired Dev](/images/ranks/rank-retired.gif)
![](images/avatars/84221162347457c55a967d.png)
Joined: 21 Nov 2004 Posts: 278 Location: Cesano Maderno
|
Posted: Wed Jun 13, 2007 2:24 pm Post subject: Re: bash per idioti (as I am) |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 2:25 pm Post subject: |
|
|
con o senza spazio, non cambia nulla ![Sad :-(](images/smiles/icon_sad.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 2:28 pm Post subject: Re: bash per idioti (as I am) |
|
|
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 ![Sad :-(](images/smiles/icon_sad.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
crisandbea Veteran
![Veteran Veteran](/images/ranks/rank_rect_5_vet.gif)
Joined: 03 Jul 2005 Posts: 1778 Location: BOSCO (SA) ... ma domiciliato a Bologna....
|
Posted: Wed Jun 13, 2007 2:29 pm Post subject: Re: bash per idioti (as I am) |
|
|
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 ![Sad :-(](images/smiles/icon_sad.gif) |
per niente intendi che non ti stampa nulla ??? |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 2:31 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
Guglie Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
![](images/avatars/33683012042171e97ee913.jpg)
Joined: 01 Mar 2004 Posts: 240 Location: switzerland - zürich
|
Posted: Wed Jun 13, 2007 2:32 pm Post subject: Re: bash per idioti (as I am) |
|
|
Quote: | ho messo l'espressione che riepie $pippo tra virgolette, ma non cambia nulla ![Sad :-(](images/smiles/icon_sad.gif) |
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 |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 2:33 pm Post subject: Re: bash per idioti (as I am) |
|
|
Guglie wrote: | Quote: | ho messo l'espressione che riepie $pippo tra virgolette, ma non cambia nulla ![Sad :-(](images/smiles/icon_sad.gif) |
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 |
|
![](templates/gentoo/images/spacer.gif) |
drizztbsd Retired Dev
![Retired Dev Retired Dev](/images/ranks/rank-retired.gif)
![](images/avatars/84221162347457c55a967d.png)
Joined: 21 Nov 2004 Posts: 278 Location: Cesano Maderno
|
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
skypjack l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
![](images/avatars/125299789148407c8d02083.jpg)
Joined: 05 Aug 2006 Posts: 884 Location: Italia - Firenze
|
Posted: Wed Jun 13, 2007 3:33 pm Post subject: |
|
|
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 :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 4:45 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
Luca89 Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/15529267248502dd4c2bab.jpg)
Joined: 27 Apr 2005 Posts: 2107 Location: Agrigento (Italy)
|
Posted: Wed Jun 13, 2007 4:58 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Jun 13, 2007 6:19 pm Post subject: |
|
|
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.
E poi un pippo.c lo ho già dovuto sopportare.[/OT] _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif)
Last edited by djinnZ on Wed Jun 13, 2007 6:26 pm; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 6:26 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 6:31 pm Post subject: |
|
|
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
Quote: | [OT] la prossima volta vedi di usare qualcosa di meno antipatico dei prodotti di quegli stucchevoli idioti della disney per fare gli esempi.
E poi un pippo.c lo ho già dovuto sopportare.[/OT] |
eh, usero' i personaggi di capitan harlock
Coda |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Jun 13, 2007 6:41 pm Post subject: |
|
|
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?! [/OT] _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 6:44 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 6:51 pm Post subject: |
|
|
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?! [/OT] |
non sono io che son vecchio. Son gl'altri che son troppo giovani
Coda |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Jun 13, 2007 6:55 pm Post subject: |
|
|
[ -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. Ovviamente io si quindi mi permetto di sfottere. [/OT] _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 7:01 pm Post subject: |
|
|
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
Coda |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Guglie Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
![](images/avatars/33683012042171e97ee913.jpg)
Joined: 01 Mar 2004 Posts: 240 Location: switzerland - zürich
|
Posted: Wed Jun 13, 2007 7:03 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
codadilupo Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Wed Jun 13, 2007 7:04 pm Post subject: |
|
|
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. Ovviamente io si quindi mi permetto di sfottere. [/OT] |
solo perchè era in B/N il televisore di cucina, mica perchè perchè era B/N la trasmissione TV !
Coda |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Jun 13, 2007 7:08 pm Post subject: |
|
|
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...
[/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
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|