ho fatto un piccolo test con il seguente codice:
#!/bin/bash
if [ -f "buggyScript.sh" ; then
echo "found this buggy script"
fi
Nota il mancante] in se. Ora ho inserito
bash -n buggyScript.sh
e il mancante] non è stato rilevato.
Il secondo script di test si presentava così:
#!/bin/bash
if [ -f "buggyScript.sh" ]; then
echo "found this buggy script"
Annotare il fi mancante alla alla fine del caso. Testare questo con
bash -n buggyScript.sh
restituito
buggyScript.sh: line 5: syntax error: unexpected end of file
Conclusione: test lo script con l'opzione n rileva alcuni errori, ma non tutti di loro. Quindi immagino che trovi davvero tutti gli errori solo durante l'esecuzione dello script.
Non sembra funzionare. Ho eseguito ksh -n test.sh ma non ha elencato l'errore di sintassi che c'era in test.sh – sachin
Sì, funziona. Sono sicuro che non vi è alcun errore di sintassi. Se ci mostri lo script, possiamo analizzare se le tue aspettative di trovare un errore di sintassi sono corrette. – Jens
Quindi prova con 'sh -n script'. Dovrebbe funzionare. Tuttavia, se il tuo errore di sintassi è in un nome di comando non valido, questo verrebbe catturato solo in fase di esecuzione. 'sh -n' controlla solo la sintassi della shell effettiva. – tripleee