Newsgroup: it.comp.os.linux.iniziare
Titolo: [bash] redirezione dell'output in un ciclo for do


ICQ# 11129001
http://www.calogero.org/

 ha scritto nel messaggio
news:3C9AF6C2...@spam.it...
| [denny@lnx05ict denny]$ for f in /home/denny/prova/*; do echo "1" > $f;
done
| bash: $f: ambiguous redirect
per quel poco che so mi sembra corretto.
la stessa cosa te la fa se usi un in 'ls ....'?
o cat al posto di echo?
ci sono directory dentro prova?
--
[ Penguin At Work ]
-> 
http://web.tiscali.it/penguinatwork/
-> aka Fustino Di Dixan while working

 ci sono directory dentro prova?
nada.
grazie, ciao! :)


 ha scritto nel messaggio
news:3C9AFF82...@spam.it...
| se uso ls, funziona. solo che mi elenca 2 volte i files presenti nella
| directory in questo modo strano...
| [denny@lnx05ict denny]$ for f in /home/denny/prova/*; do ls $f; done
| /home/denny/prova/*        /home/denny/prova/ciccio3
| /home/denny/prova/ciccio7
| /home/denny/prova/ciccio   /home/denny/prova/ciccio5
|/home/denny/prova/pippo5
no, intendevo tipo:
$ for f in 'ls -1 /home/denny/prova'; do echo "1" > $f; done
| usare cat al posto di echo, in che senso?
se non erro anche cat scrive... o no? ora pero' non ricordo
se gli devi dare q.che parametro.
ma il contenuto va cancellato o accodato?
casomai prova con >>


 casomai prova con >>
va cancellato, comunque ho provato anche con >>
tnx, ciao!


 ha scritto nel messaggio
news:3C9B0CDE...@spam.it...
| [denny@lnx05ict denny]$ for f in 'ls -l /home/denny/prova/*'; do echo
| "1" > $f; done
| bash: $f: ambiguous redirect
stavo pensando... non e' che * va a finire
che prende dentro anche . e .. ??


 che prende dentro anche . e .. ??
no... dovrebbe essere .*
comunque:
[denny@lnx05ict denny]$ for f in 'ls -l /home/denny/prova/*'; do echo 
$f; done
ls -l /home/denny/prova/* /home/denny/prova/ciccio 
/home/denny/prova/ciccio2 /home/denny/prova/ciccio3 
/home/denny/prova/ciccio5 /home/denny/prova/ciccio6 
/home/denny/prova/ciccio7 /home/denny/prova/pippo5
come vedi non vengono elencati i files nelle directory superiori. 
altrimenti facendo un:
# rm -rf /root/*
cancelleresti un bel po' di roba in piu' :)))
boh... al massimo provero' a postare su .sys e mi faro' cazziare con un 
bel man bash :))))


 bash: $f: ambiguous redirect
Ho provato con bash 1.14 e con bash 2.04: funziona con entrambi.
Forse hai una versione di bash molto vecchia.
Cosa ti dice echo $BASH_VERSION?
Eventualmente, spezza l'istruzione su piu' righe:
for f in ....; do
    echo 1 > $f
done
Ciao,
// Umberto Salsi
//
// 
http://digilander.iol.it/salsi
  --  GnuPG Key ID = BE2C F6CD 77E9 29AE

 done
ho provato a mettere il tutto in uno script:
#!/bin/sh
#
for f in /home/denny/prova/*; do
         echo "1" > $f;
done
ora funziona! pero' ho notato che omettendo il #!/bin/bash all'inizio
dava ancora errore. non funzionava digitandolo direttamente in shell, ma 
non dovrebbe essere implicito il /bin/sh ???
grazie, ciao!


 ha scritto nel messaggio
news:3C9B1C42...@spam.it...
[CUT]
boh non so che dire non ho neppure il pingu
per provare a seguirti :(
prova su .sys anche pronostico anche io
quello che prevedi tu.| altrimenti facendo un:
| # rm -rf /root/*
| cancelleresti un bel po' di roba in piu' :)))
umm.. direi che corri il rischio con *.*
-rf che io sappia non torna su dalla cartella di
partenza
ciao e scusa se ti ho fatto perdere tempo.
buon fine settimana


 buon fine settimana
anche a te, grazie!


 bash: $f: ambiguous redirect
Hai per caso qualche file che contiene spazi? A me da' quel messaggio,
in questo caso.
Comunque sia, meglio indicare le variabili sempre tra doppi apici:
    for f in ...; do echo 1 > "$f"; done


non dovrebbe essere implicito il /bin/sh ???
AFAIK dipende dall tua shell predefinita. Per questo si specifica all'inizio
dello script quale usare.
Di più non so.
Ciao.
-- 
Antonio
| Pretendi una risposta immediata dal NG? 
| Puoi ottenerla!
| 
http://groups.google.com/advanced_group_search