Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231

    [bash] errore nello script

    Scusate ho appena iniziato a scrivere uno script

    Questo semplicissimo script che genera (o almeno dovrebbe) un numero binario di n cifre continua a darmi lo stesso errore :

    prova.sh: line 15: syntax error: unexpected end of file

    codice:
    #!/bin/bash
    lunghezza=$1
    risultato=0
    contatore=1
    potenza=1
    while [ "$contatore" -le $lunghezza ];
    do
    	let cifra=$RANDOM
    	let cifra %= 2
    	let risultato += potenza * cifra
    	let potenza *= 10
    done
    echo Il numero generato e $risultato
    exit 0
    sicuramente l'errore sarà banale, ma non riesco proprio a capire....
    qualcuno può aiutarmi?
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    PS: Provando ad eseguire alcuni semplici script di esempio, ho notato che mi da questo errore non appena eseguo uno script contenente un ciclo (while, for...).

    Poichè sto utilizzando Cygwin su Windows, può essere questo il problema?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,526
    #!/bin/bash
    lunghezza=$1
    risultato=0
    contatore=1
    potenza=1
    while [[ "$contatore" -le $lunghezza]] ;
    do
    let cifra=$RANDOM
    let cifra %= 2
    let risultato += potenza * cifra
    let potenza *= 10
    done
    echo Il numero generato e $risultato
    exit 0

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    Grazie per la risposta, ma ancora il problema non è risolto...
    Credo che manchi uno spazio tra $lunghezza e ]] , giusto?
    Però anche con lo spazio continua a darmi lo stesso errore...

    Un chiarimento: perchè nella condizione $contatore è tra virgolette e non $lunghezza?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,526
    si non far caso, ci vogliono gli spazi ma per fretta mi sono sfuggiti.veramente tutte e due le variabili è meglio se le quoti.
    ad occhio la sintassi è corretta, non vorrei dire ma può anche darsi sia un problema di Cygwin il fatto che ti dia errore lo stesso

  6. #6
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570

    Re: [bash] errore nello script

    Originariamente inviato da alelaps
    codice:
    #!/bin/bash
    lunghezza=$1
    risultato=0
    contatore=1
    potenza=1
    while [ "$contatore" -le $lunghezza ];
    do
    	let cifra=$RANDOM
    	let cifra%=2
    	let risultato+=potenza*cifra
    	let potenza*=10
    done
    echo Il numero generato e $risultato
    exit 0
    Ho corretto le righe evidenziate eliminando gli spazi superflui.
    Non sono necessari i doppi apici sul testi di contatore nella per il test di while.
    Il problema secondo me e' che il codice genera un ciclo infinito se lunghezza e' maggiore di zero.
    Non capisco l'intento di questo script, ma non e' questo il punto.


    ciao
    slack? smack!

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    L'intento è quello di generare un numero random binario di n cifre, dove n è un parametro.
    Hai ragione comunque, avevo dimenticato l'incremento del contatore.
    Ho corretto, ma dà ancora lo stesso errore...
    Ecco il nuovo codice

    codice:
     
    #!/bin/bash
    lunghezza=$1
    risultato=0
    contatore=1
    potenza=1
    while [ $contatore -le $lunghezza ] ;
    do
    let cifra=$RANDOM
    let cifra%=2
    let risultato+=potenza*cifra
    let potenza*=10
    let contatore+=1
    done
    echo Il numero generato e $risultato
    exit 0
    Cosa ne pensi? E' completamente sbagliato? Credo che sia ben chiaro che è il mio primo script...

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    Scusate se insisto, ma nessuno può aiutarmi?
    Ho provato ad eseguire gli script anche con KnopILS, ma dà sempre lo stesso errore, anche con gli script di esempio delle varie guide. Quindi non è un problema di Cygwin.
    Sono bloccato in questo punto e non riesco ad andare avanti. Evidentemente non ho ben chiaro qualcosa, ma cosa?

    codice:
    prova.sh: line 17: syntax error: unexpected end of file

  9. #9
    Originariamente inviato da alelaps
    L'intento è quello di generare un numero random binario di n cifre, dove n è un parametro.
    Hai ragione comunque, avevo dimenticato l'incremento del contatore.
    Ho corretto, ma dà ancora lo stesso errore...
    Ecco il nuovo codice

    codice:
     
    #!/bin/bash
    lunghezza=$1
    risultato=0
    contatore=1
    potenza=1
    while [ $contatore -le $lunghezza ] ;
    do
    let cifra=$RANDOM
    let cifra%=2
    let risultato+=potenza*cifra
    let potenza*=10
    let contatore+=1
    done
    echo Il numero generato e $risultato
    exit 0
    Cosa ne pensi? E' completamente sbagliato? Credo che sia ben chiaro che è il mio primo script...
    Questo a me non dà errori su bash:

    codice:
    ┌─[psykopear @ Pera -- 18:16:50] 
    └─[~/Script]> ./bin 2
    Il numero generato e 0
    ┌─[psykopear @ Pera -- 18:16:56] 
    └─[~/Script]> ./bin 10
    Il numero generato e 1000100011
    ┌─[psykopear @ Pera -- 18:17:00] 
    └─[~/Script]> ./bin 10000
    Il numero generato e 5433654075493070355
    ┌─[psykopear @ Pera -- 18:17:16] 
    └─[~/Script]>
    Però se l'intento è quello di generare un numero binario, nell'ultimo risultato c'è qualcosa che non va...
    "L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."
    Eduardo Galeano
    Il mio sito
    "if you want people to RTFM, make a better FM!"

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    scusa forse ho capito il problema...
    cosa scrivi per eseguire lo script?

    io digito:

    sh prova.sh 5

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.