[RISOLTO] Problema con script Bash

Bash, Perl, Python, Ruby, ...

[RISOLTO] Problema con script Bash

Messaggioda lcproductions » 21/10/2016, 19:57

Salve a tutti.
Da un po' di tempo smanetto con gli script Bash.
Ho creato uno script per semplificare la connessione ad una rete wifi. Sostanzialmente, elenca le interfacce di rete e chiede quale abilitare. Fatto ciò, chiede il tipo di protezione della rete (aperta, WEP o WPA), successivamente l'ESSID e la password. Fatto ciò, se l'interfaccia ha una configurazione statica, esce dal programma, altrimenti assegna un indirizzo IP con
Codice: Seleziona tutto
dhclient
o
Codice: Seleziona tutto
dhcpcd
.
Tuttavia, quando vado ad eseguire lo script, ottengo questo errore
Codice: Seleziona tutto
./wifi.sh: riga 26: errore di sintassi vicino al token non atteso "then"
./wifi.sh: riga 26: `then'

Ho esaminato e riesaminato più volte il codice, e non sono riuscito a capire il problema.
La precedente versione dello script, con meno caratteristiche ma funzionante, è hostata su GitHub.
Mi affido a chi di più esperto di me per risolvere questo problema.
Qui vi lascio lo script, parzialmente commentato. Perdonatemi se la sintassi non è delle più "pulite", e il tutto non è ottimizzato, ma ci sto lavorando ;D
https://mega.nz/#!vx8wwKyJ!-bzs-ENC9uAtZJh4x5UCtSBwiKjJmttlCe6Y4NT36pQ
Ultima modifica di lcproductions il 26/10/2016, 19:02, modificato 1 volta in totale.
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Problema con script Bash

Messaggioda s3v » 22/10/2016, 5:54

Manca lo spazio tra gli "if" (e gli "elif") e la parentesi quadra seguente.
Considera che in bash la "[", a differenza di altri linguaggi, è un'istruzione ;)
Codice: Seleziona tutto
$ man [
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5501
Iscritto il: 31/12/2008, 11:54

Re: Problema con script Bash

Messaggioda lcproductions » 23/10/2016, 9:23

Grazie mille per la risposta!
Quando lo eseguo, ora non dà quell'errore, ma ne dà un altro

Codice: Seleziona tutto
./wifi.sh: riga 32: errore di sintassi vicino al token non atteso "else"
./wifi.sh: riga 32: `else'

A quanto ho capito, la riga di codice incriminata dovrebbe essere uno di queste
Codice: Seleziona tutto
 echo "Completato!"
else
dhcpcd $INTERFACCIA || dhclient $INTERFACCIA

Ma non sono davvero riuscito a capire quale
??? ??? ??? ???
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Problema con script Bash

Messaggioda s3v » 23/10/2016, 9:52

La parentesi quadra in tutto il codice dello script deve essere preceduta e seguita da almeno uno spazio ;)
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5501
Iscritto il: 31/12/2008, 11:54

Re: Problema con script Bash

Messaggioda lcproductions » 26/10/2016, 17:31

e così ho fatto.....
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Problema con script Bash

Messaggioda s3v » 26/10/2016, 18:30

Uhm.
Puoi fornire lo script aggiornato?
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5501
Iscritto il: 31/12/2008, 11:54

Re: Problema con script Bash

Messaggioda lcproductions » 26/10/2016, 18:40

Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07

Re: Problema con script Bash

Messaggioda s3v » 26/10/2016, 18:53

Manca il "then" relativo all'"elif".
La struttura deve essere:
Codice: Seleziona tutto
if [ qualcosa1 ]
then
  istruzione10
  ...
elif [ qualcosa2 ]
then
  istruzione20
  ...
else
  istruzione30
  ...
fi

;)
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5501
Iscritto il: 31/12/2008, 11:54

Re: Problema con script Bash

Messaggioda lcproductions » 26/10/2016, 19:00

:P
Pardon... Non l'avevo notato..... ;D
Perdonami, ma è da poco che scrivo script così grandi, e , rispetto ad altri linguaggi di scripting, ha una sintassi un po' più confusa.
Grazie comunque, ora funziona!
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 59
Iscritto il: 30/12/2015, 22:07


Torna a Scripting

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron