Pages (39): « First ... « 15 16 17 18 [19] 20 21 22 23 » ... Last » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- Esame di laboratorio (Giugno 2007) - Domande (http://www.dsy.it/forum/showthread.php?threadid=31182)
mi sono appena accorto che non sono il solo ad avere questo problema
infatti, stesso problema, ho provato a sostiruire i cicli for con i while
loro funzionano... quelli che non devono "restituire" parametri vanno (come quello per aggiungere utenti)
e all'interno del ciclo i calcli funzionano (se vedi io prima con degli echo di controllo li faccio stampare a schermo, se li provi, vedi che alla fine dei cicli while, i valori sarebbero corretti
ma fuori dal ciclo... bhum, scompaiono
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
anch'io ho lo stesso problema e sto cercando una soluzione!
mi aggrego al vostro problema...
Non è che bisogna usare in qualche modo particolare expr ??
ovvero : io expr l'ho visto usare :
SUM=$(expr $i+$c)
oppure
SUM='expr $i+$c'
oppure
SUM=[expr ${i}+${c}]
.
.
.
sono modi diversi per fare la stessa cosa oppure hanno un significato preciso??
grazie e ciaooo
no bullet
expr va, se fai girare il mio script te ne accorgi, la somma funziona, e stampa ogni volta una somma incrementale, quindi funziona... soloc eh fuori dal while torna a valere zero
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Come a me...Stessa cosa ... è come se le inizializza a zero quando finisce il ciclo...ke nervossoooooo....
ho scoperto una cosa :
sto facendo lo script per trovare per ogni utente l'ocupazione in kb
#!/bin/sh
SUM=0
(cat /etc/passwd | cut -d : -f 3 |sort -n |uniq) |wile read id ;do
(find / -type f -user $id | xargs du | cut -f 1) | while read Sz ; do
SUM=$(expr $SUM + $ Sz)
done
echo " user $id spazio :$Sz"
done
ho scoperto questo: se cambio il valore a cui inizializzo SUM cambia pure il valore di uscita dal while ovvere mette il valore ke uso per inizializzare.
ho scritto a monga peravere dei chiarimenti sul while...
se scoprite qualcosa scriveteeeeee...
nell'echo non $Sz ma $SUM
Originally posted by Liumberg
scusate..
sto cercando di risolvere il problema "out of space" dei cicli FOR
usando while,il problema è che il sistema sembra dimenticare il contenuto delle variabili che vengono usate appena si esce da ciclo
nel seguente script (calcola lo spazio occupato dall'utente root) il valore della variabile TEMP alla fine è sempre 0.
TEMP=0
find ./ -type f -user root|xargs du|cut -f 1|while read FILE
do
TEMP='expr $TEMP \+ $FILE'
done
echo "occupazione utente root : $TEMP"
qualcuno sa aiutarmi?
ho paura che domani mi prendo una denuncia per aggressione..
Anche a me funziona tutto se uso il for
ma alle volte il for ti può dare problemi di out of space che il while nn da.... misteri di minix
il problema è la localizzazione delle variabili.
la variabile TEMP esterna al ciclo di while non è la stessa TEMP all'interno del ciclo.
Infatti se metti una echo nel ciclo il TEMP viene valorizzato correttamente.
Si può, non molto elegantemente, risolver usando il filesystem così:
#!/bin/sh
somma=0
find / -type f -user 0 -exec ls -s {} \; | cut -f 1 -d " "|while read FILE
do
somma=$(expr $somma + $FILE)
echo $somma > ./tmp
done;
somma=$(cat ./tmp)
rm ./tmp
echo La somma dei file di root è: $somma
quindi quando uso il while e modifico una variabile dichiarata all'esterno di esso il valore modificato vale solo all'interno del while
giusto??
Grazie
ciaoo ciao
esatto.
ma come mai il while si comporta quasi come se fosse una funzione (quindi con le proprie variabili interne?
se non arrivavi tu a dircelo, di questo comportamento (avremmo potutto capirlo e quindi usar comunque il file, ma insomma) dovre avremmo dovuto impararlo?
è così con linux normalmente o solo minix?
mi sa che prima proverò con i for e se creano problemi faro questi while + file
(un po' la soluzione che avevo usato in uno script un po' indietro)
domanda forse stupida, perchè il file è ./temp e non semplicemente temp?
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by zonker
[...]
#!/bin/sh
somma=0
find / -type f -user 0 -exec ls -s {} \; | cut -f 1 -d " "|while read FILE
do
somma=$(expr $somma + $FILE)
echo $somma > ./tmp
done;
somma=$(cat ./tmp)
rm ./tmp
echo La somma dei file di root è: $somma
All times are GMT. The time now is 04:42. | Pages (39): « First ... « 15 16 17 18 [19] 20 21 22 23 » ... Last » Show all 571 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.