PDA

Visualizza la versione completa : [BASH] Ottenere dimensioni di una cartella in valore numerico


valer_85
18-05-2006, 11:16
ciao, come faccio a ottenere la dimensione di una cartella? col comando du -sh ottengo una stringa, invece a me serve un intero, x poterlo confrontare... come faccio? grazie

andbin
18-05-2006, 11:55
Originariamente inviato da valer_85
ciao, come faccio a ottenere la dimensione di una cartella? col comando du -sh ottengo una stringa, invece a me serve un intero, x poterlo confrontare... come faccio? grazie Esempio:

set `du -s`
SIZE=$1

if [ $SIZE -gt 1000 ]; then
....bla.bla...
Nota: il -h di du ti fornisce una informazione "human readable" ma poco utile se devi manipolare numeri!

valer_85
18-05-2006, 12:39
ah grazie mille! ho messo -sh... sembra andare lo stesso... mi puoi spiegare a cosa servono le prime 2 righe? soprattutto il set... grazie

andbin
18-05-2006, 12:52
Originariamente inviato da valer_85
ah grazie mille! ho messo -sh... sembra andare lo stesso... mi puoi spiegare a cosa servono le prime 2 righe? soprattutto il set... grazie Certo.
Credo che tu sappia che il backquote (`) serve per far eseguire un comando "catturando" l'output generato.
Quindi supponendo che du -s ti fornisca in output per esempio:

1151 .la prima riga verrebbe eseguita come se fosse scritta:

set 1151 .
Il comando set prende gli N parametri e li assegna alle variabili $1, $2, $3, ecc...
Quindi SIZE=$1 prende il primo parametro che vale "1151".

valer_85
18-05-2006, 13:08
quindi $1 nn il parametro passato allo script? come faccio a dirgli di leggere la dimensione della cartella ke passo allo script come argomento?
scusa ma nn capisco... :dh:

andbin
18-05-2006, 13:19
Originariamente inviato da valer_85
quindi $1 nn il parametro passato allo script? come faccio a dirgli di leggere la dimensione della cartella ke passo allo script come argomento?
scusa ma nn capisco... :dh: S, $1, $2, ecc... sono i parametri passati allo script ma il comando set consente di assegnare dei nuovi valori a queste variabili "speciali".

Esempio di script:

DIR=$1 # Salvo parametro 1 !!!

set `du -s $DIR`
SIZE=$1

valer_85
18-05-2006, 18:34
quindi dopo le istruzioni ke hai scritto tu nn potrei + accedere al vero valore del paramentro passato allo script? da quel momento $1 varr `du -s $DIR` ?

andbin
18-05-2006, 21:09
Originariamente inviato da valer_85
quindi dopo le istruzioni ke hai scritto tu nn potrei + accedere al vero valore del paramentro passato allo script?Esatto! Le variabili $1, $2, ecc... sono speciali. All'inizio dello script contengono i parametri passati. Poi possibile riassegnare dei valori a queste variabili con il comando set, ed l'unico modo per farlo. E i parametri iniziali vengono persi, mi sembra ovvio.

Poi se ci pensi un attimo, se hai la variabile $PIPPO, puoi fare PIPPO=123 ma se hai $1, non puoi fare 1=123!!!!!

Per capire meglio, prova questo script:

echo "[$1]"
echo "[$2]"
echo "[$3]"
echo "[$4]"

set `echo "aa bb"`

echo "[$1]"
echo "[$2]"
echo "[$3]"
echo "[$4]"
Avvialo passando 4 parametri.


Originariamente inviato da valer_85
da quel momento $1 varr `du -s $DIR` ? No.
Se $DIR contiene per esempio "/sbin", `du -s $DIR` pu fornire in output per esempio:

13498 /sbin
Allora il set imposta $1="13498" e $2="/sbin"

valer_85
18-05-2006, 23:16
domani provo, se ho dei problemi riposto... grazie mille :D ciaociao

Loading