Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Token mancanti o imprevisti

Un altro errore comune è dimenticare di completare un comando composto, come if or while. Vediamo cosa succede se togliamo il punto e virgola dopo il test nella if comando:



#! / Bin / bash


# problema: script per dimostrare errori comuni numero=1

se [ $numero = 1 ] allora

echo "Il numero è uguale a 1." altro

echo "Il numero non è uguale a 1."

fi

#! / Bin / bash


# problema: script per dimostrare errori comuni numero=1

se [ $numero = 1 ] allora

echo "Il numero è uguale a 1." altro

echo "Il numero non è uguale a 1."

fi


Il risultato è questo:



[io@linuxbox~]$ guaio

/home/me/bin/trouble: riga 9: errore di sintassi vicino a token imprevisto

'altro'

/home/me/bin/problema: riga 9: "altro"

[io@linuxbox~]$ guaio

/home/me/bin/trouble: riga 9: errore di sintassi vicino a token imprevisto

'altro'

/home/me/bin/problema: riga 9: "altro"


Anche in questo caso, il messaggio di errore punta a un errore che si verifica dopo il problema effettivo. Quello che succede è davvero molto interessante. Come ricordiamo, if accetta un elenco di comandi e valuta il codice di uscita dell'ultimo comando nell'elenco. Nel nostro programma, intendiamo che questa lista sia composta da un singolo comando, [, sinonimo di test. Il [ comando prende ciò che lo segue come un elenco di argomenti; nel nostro caso, quattro argomenti: numero di $, 1, =e ]. Tolto il punto e virgola, la parola poi viene aggiunto all'elenco degli argomenti, che è sintatticamente legale. Il seguente eco anche il comando è legale. Viene interpretato come un altro comando nell'elenco dei comandi che if valuterà per un codice di uscita. Il altro si incontra dopo, ma è fuori luogo, poiché la shell lo riconosce come parola riservata (una parola che ha un significato speciale per la shell) e non il nome di un comando, da cui il messaggio di errore.


Il miglior sistema operativo cloud computing su OnWorks: