Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Inserimento Decimali su ShellScript

    Salve ragazzi

    ho un problema, sto' effettuando un un programma in shell script, ma mi sono sbloccato

    non riesco a far inserire i decimali ad una divisione ne tantomeno effettuare l'approssimazione per eccesso

    cioè mi spiego;

    $4 è il quarto parametro dello script

    Num1=$4

    Variabile1=$(echo "$Num1/30.0"|bc)

    attualmente se lancio passo come $4=100

    lui effettua la divisione ed estrae un valore pari a 3
    anzichè riportarmi 33.3

    Spero di essermi spiegato

    Grazie

  2. #2

    Re: Inserimento Decimali su ShellScript

    codice:
    Num1=$4
    Variabile1=$(echo "$Num1/30.0"|bc -l)
    Puoi anche usare il Perl:
    codice:
    Num1=$4
    Variabile1=`echo "$Num1" | perl -e '$a = <STDIN>; print $a/3.0;'`

  3. #3
    Scusami ho provato ad effettuare come dicevi usando il perl anche se non so' se di una macchina UNIX che utilizzo funzioni

    il problema è che la divisione fatta 100/30.0
    dove 100 è la variabile

    restituisce 3
    anzichè 3.33
    ed eventuale arrotodamento a 4

    conosci alternative?

  4. #4
    codice:
    menphisx@dhcppc0:~$ echo "100.0/30.0" | bc
    3
    menphisx@dhcppc0:~$ echo "100.0/30.0" | bc -l
    3.33333333333333333333
    menphisx@dhcppc0:~$ echo "100.0" | perl -e '$a=<STDIN>; print $a/30.0; print "\n";'
    3.33333333333333

  5. #5
    Grande menphisx

    funziona!!!!!!
    o almeno una parte

    il problema e che se provo a mettere il tutto come una variabile mi dà di nuovo 3 anzichè 3.33333

    variabile=$(echo "100.0" | perl -e '$a=<STDIN>; print $a/30.0; print "\n";')

    ma poi come faccio ad arrotondare il 3.333333 in 4?

    cmq grazie per l'aiuto stavo impazzendo a farlo

  6. #6
    codice:
    menphisx@dhcppc0:~$ var1=`echo "100.0/30.0" | bc -l`
    menphisx@dhcppc0:~$ echo $var1
    3.33333333333333333333
    menphisx@dhcppc0:~$ var1=`echo "100.0" | perl -e '$a=<STDIN>; print $a/30.0; print "\n";'`
    menphisx@dhcppc0:~$ echo $var1
    3.33333333333333

  7. #7
    non ci crederai stavo diventando matto...
    a te funzionava a me no...mancava un apice non chiuso dopo il ";"....

    Ma sai come fare un arrotondamento del numero?

  8. #8
    codice:
    #perl
    menphisx@dhcppc0:~$ echo "100.0" | perl -e 'use POSIX qw(ceil); $a=<STDIN>; print ceil($a/30.0); print "\n";'
    4
    #bc
    menphisx@dhcppc0:~$ ceil="define ceil(x){ z=scale; scale=0; x /= 1; x += 1; scale=z; return(x) }"
    menphisx@dhcppc0:~$ echo "$ceil; ceil(100/30)" | bc -l
    4

  9. #9
    Grazie menphisx

    sono riuscito grazie a te ad ultimare lo script

    Ciao...

  10. #10

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 © 2024 vBulletin Solutions, Inc. All rights reserved.