Newsgroup: it.comp.os.linux.iniziare
Titolo: [BASH] Espressione in if

Salve a tutti.
Ho fatto un piccolo bash script che riporto qui sotto:
#!/bin/bash
 
while [ 1 ]; do
	condizione=`ifconfig | grep lo`;
	echo $condizione;
	if [ $condizione="" ]; then   <---- Problema
		exit
	else
	 	fetchnews -vvvvvv
	fi
	sleep 300;
done
La riga segnalata mi dà problemi: nel caso in cui
$condizione è diverso da "" la shell mi dice
too many parameters
se invece $condizione é "" allora non dà problemi.
Ho provato varie sintassi (==, eq, spazi tra l'uguale,
usare direttamente `ifconfig ...` invece di inserirlo
in una variabile), ma il risultato è lo stesso.
Sul bash programming howto la sintassi è proprio quella
che ho usato io.
-- 
|f(x)-f(y)|<=L|x-y|

 too many parameters
Proverei magari una cosa del tipo
while /bin/true; do
       if ifconfig | grep lo; then
           	exit
       else
         	fetchnews -vvvvvv
       fi
       sleep 300;
done
Ciao
  Andrea

 	if [ $condizione="" ]; then   <---- Problema
io proverei 
if [ "$condizione"="" ]
Ciao
Angelo

Funziona, in entrambi i modi.
Thanks. 
-- 
|f(x)-f(y)|<=L|x-y|

 too many parameters
Devi mettere: if [ "$condizione" = "" ]; then ecc.ecc.
-- 
+++ Salvo B In The Place To Be +++
[*] Writing from hq -*- Linux 2.4.18
[*]  up 1 hour 57 minutes
[*] mailto: salvob (at) emuita (dot) it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Per informazioni si veda 
http://www.gnupg.org
iEYEARECAAYFAjzKnJMACgkQM2idHSi9Qf0DvwCffgfQJM4eT1qRFEDEVf7q/RIM
lJcAn3uEBfTonN7FbKeKCek9BcmF41jE
=1Oqj
-----END PGP SIGNATURE-----

 Linux box a C900 e Kernel 2.4.18. Risposte a ICQ 14301589 o 
mailto:
1430...@pager.icq.com

 
Sì, questa è una buona idea, così non bisogna usare ifconfig
che gli users non hanno.
-- 
|f(x)-f(y)|<=L|x-y|

 done
Devi scrivere le variabili tra virgolette doppie
if [ "$condizione" = "" ]; then ...
altrim. se $condizione e' fatta di diverse parole, esse vengono trattate
come altrettanti parametri del test.
Se ho capito bene, tu vuoi scaricare le news ogni 5 minuti se una
determinata interfaccia di rete e' attiva. Io farei cosi':
while : ; do
	if ifconfig lo 2>/dev/null; then
		fetchnews -vvvv
	fi
	sleep 300
done
Sei sicuro che sia proprio necessario aggiornare le news ogni 5 minuti?
non sarai mica uno di quelli che confondono i newsgroup con le chat line?!
adesso ho capito chi e' che mi intasa sempre la linea!
Se il tuo problema e' che vuoi l'aggiornamento automatico non appena e' attiva
l'interfaccia, e poi ogni 300 secondi, allora io modificherei leggermente
la logica:
while : ; do
	if ifconfig lo 2>/dev/null; then
		fetchnews -vvvv
		sleep 3600  # <-- aggiunto questo
	fi
	sleep 60  # <-- ridotto questo
done
In questo modo l'aggiornamento avviene entro un minuto dall'attivazione del
collegamento, e con frequenza non superiore a una volta ogni ora.
Ciao,
// Umberto Salsi
//
// 
http://digilander.iol.it/salsi
  --  GnuPG Key ID = BE2C F6CD 77E9 29AE


Sicuro che il problema non stia qui ?
fetchnews -vvvvvv
Sei "v" sono troppe :)
-- 
Qui e' Jack Burton, del Pork-Chop Express,
che parla a chiunque sia in ascolto...
http://digilander.iol.it/burton666/index.html

 
Ah! ho capito piu' tardi. Si tratta di permettere lo sleep di rimanere 
attivo e pollare la connessione. In ogni caso ti ci vorra' un break ad 
operazione conclusa?


 adesso ho capito chi e' che mi intasa sempre la linea!
*ROTFL!*
