Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    20

    [BASH] Errore nell'esecuzione di uno script

    Salve a tutti
    Ho questo esercizio:

    Realizza uno script che accetta come parametro
    sulla linea di comando un intero compreso tra 1
    e 10 e chieda la tabellina ad esso relativa
    Si leggano le risposte dell'utente e si calcoli un
    punteggio di uno per ogni risposta esatta ed un
    punteggio di 0 per ogni risposta sbagliata
    Si concluda lo script visualizzando il punteggio
    finale

    che ho svolto in questo modo:
    codice:
    #!/bin/bash
    	read N
    	while [ "$N" -lt "1" -o "$N" -gt "10" ]
    	do
    		if [ "$N" -lt "1" -o "$N" -gt "10" ]
    		then
    			echo Inserire un numero compreso tra 1 e 10
    			read N
    		else
    			cont=0
    			for((i=0; i<=10; ++i))
    			do
    				echo $N x $i = ?
    				read ans
    				if [ "$ans" = "$(($N*$i))" ]
    				then
    					++cont
    				fi
    			done
    		fi
    		echo Il punteggio ottenuto è $cont
    	done
    Quando lo eseguo, il terminale mi restituisce questo errore:
    codice:
    ./es_13: riga 3: [: : attesa espressione intera
    E' probabilissimo che sia una stupidata, visto che sono alle primissime armi, ma son due ore che ci sbatto la testa, e non riesco a risolvere in nessun modo...

  2. #2
    Scusa non sono ferratissimo su questo linguaggio (lo uso ogni tanto per velocizzarmi alcune operazioni da terminale), ma questo frammento di codice non mi convince...
    codice:
    while [ $N -lt 1 -o $N -gt 10 ]
    	do
    		if [ $N -lt 1 -o $N -gt 10 ]
    		then
                          .......
                    else
                          #non verra' eseguito!
    Se entra nel while con la condizione n<1 or n>10 vera, scegliera' sempre il ramo if... o no?

    Poi le virgolette che hai posto nelle condizioni anche non mi convincono... prova a toglierle.

    Infine sulla traccia ti dice:
    "accetta come parametro sulla linea di comando un intero compreso tra 1 e 10"
    Bene, ma se inserisci un numero tra 1 e 10, il while non viene eseguito. La condizione e' sbagliata, sostituiscila con:
    codice:
    while [ $N -gt 1 -a $N -lt 10 ]
    do
         .....

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.