Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

    [script] - non capisco cosa mi sfugge

    voglio ricercare su tutto il sistema lo spazio occupato dai file dell' utente xyz

    codice:
    tot=0;
    tot=$(expr $tot + $(find / -type f -user xyz -exec du {} \; | cut -f 1))
    echo "spazio occupato: $tot"
    viene generato l'errore expr: sintax error
    Stranamente a me sembra corretto il codice, cosa mi sfugge ?

    grazie 1000

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    forse ho capito almeno credo

    la command substitution $(find / ....) in realtà da in pasto alla expr una cosa del tipo

    12 33 20 51 ....

    e non un singolo valore alla volta, da qui la segnalazione dell'errore ?
    In sostanza alla expr viene passata una stringa di numeri in luogo di una valore per volta, giusto ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,526
    considera i seguenti esempi

    # export VAR=88
    # export VAR1=87

    se uso expr ottengo errore

    # expr $VAR + $VAR1
    expr: syntax error

    se invece ne faccio a meno e racchiudo tutto in doppie parentesi

    # (( foo = $VAR + $VAR1)) ; export foo ; echo $foo
    175

    ottengo il risultato che volevo. Applica il tutto al tuo script e risolvi l'errore.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da detroit
    considera i seguenti esempi

    # export VAR=88
    # export VAR1=87

    se uso expr ottengo errore

    # expr $VAR + $VAR1
    expr: syntax error

    se invece ne faccio a meno e racchiudo tutto in doppie parentesi

    # (( foo = $VAR + $VAR1)) ; export foo ; echo $foo
    175

    ottengo il risultato che volevo. Applica il tutto al tuo script e risolvi l'errore.
    scusa, prova il tuo esempio con: echo $(expr $VAR + $VAR1) e dovrebbe funzionare

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,526
    Si funziona lo stesso abbiamo imparato due cose a vicenda

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da detroit
    Si funziona lo stesso abbiamo imparato due cose a vicenda
    nel mio caso ho provato a stampare(visualizzare):

    echo $(find / -type f -user xyz -exec du {} \; | cut -f 1)

    12 23 45 21 88 2

    ecco perchè espr non funziona, semplicemente perchè IMHO la $(find ....) passa il suo output solo al suo termine e sotto forma di stringa il che rappresenta un input errato per la expr

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.