Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Citazioni mancanti

Se modifichiamo il nostro script e rimuoviamo la virgoletta finale dall'argomento che segue il primo

comando echo:


#! / Bin / bash


# problema: script per dimostrare errori comuni numero=1

if [ $numero = 1 ]; poi

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

if [ $numero = 1 ]; poi

echo "Il numero è uguale a 1.

altro

echo "Il numero non è uguale a 1."

fi


Guarda cosa succede:



[io@linuxbox~]$ guaio

/home/me/bin/trouble: riga 10: EOF inaspettato durante la ricerca di `"' corrispondente

/home/me/bin/trouble: riga 13: errore di sintassi: fine del file imprevista

[io@linuxbox~]$ guaio

/home/me/bin/trouble: riga 10: EOF inaspettato durante la ricerca di `"' corrispondente

/home/me/bin/trouble: riga 13: errore di sintassi: fine del file imprevista


Genera due errori. È interessante notare che i numeri di riga riportati dai messaggi di errore non si riferiscono al punto in cui è stata rimossa la virgoletta mancante, ma piuttosto a una posizione molto più avanzata nel programma. Se seguiamo il programma dopo la virgoletta mancante, possiamo capirne il motivo. bash continuerà a cercare la citazione di chiusura finché non ne trova una, cosa che fa, subito dopo la seconda eco comando. Dopo di che, bash diventa molto confuso. La sintassi del successivo if il comando è interrotto perché il fi l'istruzione è ora all'interno di una stringa tra virgolette (ma aperta).

Negli script lunghi, questo tipo di errore può essere piuttosto difficile da individuare. L'utilizzo di un editor con evidenziazione della sintassi può essere d'aiuto, poiché, nella maggior parte dei casi, visualizzerà le stringhe tra virgolette in modo diverso rispetto ad altri tipi di sintassi shell. Se si dispone di una versione completa di vim è installato, l'evidenziazione della sintassi può essere abilitata immettendo il comando:



:sintassi attiva

:sintassi attiva


Il miglior sistema operativo cloud computing su OnWorks: