[RISOLTO] Errore DONE in script!!!

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
ducarpit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 299
Iscrizione: sabato 31 ottobre 2015, 13:10
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 x64
Sesso: Maschile

[RISOLTO] Errore DONE in script!!!

Messaggio da ducarpit »

Ciao a tutti,
ho un problema con questo script:

Codice: Seleziona tutto

#!/bin/bash
prog=0
prog_usr=0
iva_tmp=0

cat Utenti.txt | while read LINE;
do
    nome=$(echo $LINE|cut -f1 -d,)
    cognome=$(echo $LINE|cut -f2 -d,)
    piva=$(echo $LINE|cut -f3 -d,)

    if[ $iva_tmp = $piva ] then
    {
        if[ -e "completo/${piva}.xml" ] then
        {
                prog_usr=$((prog_usr+1))
                cat utenti.xml | sed "s/NOME/${nome}/g" | sed "s/SURNAME/${cognome}/g" | sed "s/PROGRESSIVO/${prog_usr}" >> completo/${piva}.xml
        }else{
                prog_usr=0
                echo '<?xml version="1.0" encoding="utf-8" ?>' > completo/${piva}.xml
                echo '<anagrafiche xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance">' >> completo/${piva}.xml
                cat utenti.xml | sed "s/NOME/${nome}/g" | sed "s/SURNAME/${cognome}/g" >> completo/${piva}.xml
        }fi
    }else{
        if[ $iva_tmp = "0" ] then
        {
                echo '</anagrafiche>' >> completo/${iva_tmp}.xml
        }fi
        prog=$((prog+1))
        cat guida.xml | sed "s/IVA/${piva}" | sed "s/PROGRESSIVO/${prog}/g" | > completo/G${piva}.xml
        iva_tmp=$piva
    }fi
done
exit 0
Quando lo vado ad eseguire, mi da questo errore:

Codice: Seleziona tutto

./script.sh: riga 33: errore di sintassi vicino al token non atteso "done"
./script.sh: riga 33: `done'
Coma mai? sapete aiutarmi? Grazie mille
Christian

PS: se può essere utili: lo esegue con il comando ./[nomescript.sh]
Ultima modifica di ducarpit il domenica 19 marzo 2017, 9:28, modificato 1 volta in totale.
“I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile.”
Albert Einstein
melfnt
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1312
Iscrizione: sabato 15 ottobre 2011, 22:25

Re: Errore DONE in script!!!

Messaggio da melfnt »

ducarpit [url=http://forum.ubuntu-it.org/viewtopic.php?p=4965992#p4965992][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ciao a tutti,
ho un problema con questo script:

Codice: Seleziona tutto

#!/bin/bash
prog=0
prog_usr=0
iva_tmp=0

cat Utenti.txt | while read LINE;
do
    nome=$(echo $LINE|cut -f1 -d,)
    cognome=$(echo $LINE|cut -f2 -d,)
    piva=$(echo $LINE|cut -f3 -d,)

    if[ $iva_tmp = $piva ] then
    {
        if[ -e "completo/${piva}.xml" ] then
        {
                prog_usr=$((prog_usr+1))
                cat utenti.xml | sed "s/NOME/${nome}/g" | sed "s/SURNAME/${cognome}/g" | sed "s/PROGRESSIVO/${prog_usr}" >> completo/${piva}.xml
        }else{
                prog_usr=0
                echo '<?xml version="1.0" encoding="utf-8" ?>' > completo/${piva}.xml
                echo '<anagrafiche xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance">' >> completo/${piva}.xml
                cat utenti.xml | sed "s/NOME/${nome}/g" | sed "s/SURNAME/${cognome}/g" >> completo/${piva}.xml
        }fi
    }else{
        if[ $iva_tmp = "0" ] then
        {
                echo '</anagrafiche>' >> completo/${iva_tmp}.xml
        }fi
        prog=$((prog+1))
        cat guida.xml | sed "s/IVA/${piva}" | sed "s/PROGRESSIVO/${prog}/g" | > completo/G${piva}.xml
        iva_tmp=$piva
    }fi
done
exit 0
Quando lo vado ad eseguire, mi da questo errore:

Codice: Seleziona tutto

./script.sh: riga 33: errore di sintassi vicino al token non atteso "done"
./script.sh: riga 33: `done'
Coma mai? sapete aiutarmi? Grazie mille
Christian

PS: se può essere utili: lo esegue con il comando ./[nomescript.sh]
Guarda la sintassi dell'if. Non servono le parentesi graffe, ma solo then e fi
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Errore DONE in script!!!

Messaggio da crap0101 »

Codice: Seleziona tutto

        if[ $iva_tmp = "0" ] then
(e anche altri due) le parentesi devono essere staccate da `if`

Codice: Seleziona tutto

        cat guida.xml | sed "s/IVA/${piva}" | sed "s/PROGRESSIVO/${prog}/g" | > completo/G${piva}.xml
il `| >` ben che vada ti crea un file vuoto
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
ducarpit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 299
Iscrizione: sabato 31 ottobre 2015, 13:10
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 x64
Sesso: Maschile

Re: Errore DONE in script!!!

Messaggio da ducarpit »

Ok, grazie perfetto funziona!!!
Le parentesi le avevo inserite per un precedente errore, la sintassi la conoscevo.
Per il file giustamente come da voi detto ben che vado lo scrive sul file ma è roprio quello che voglio quindi OK anche per quello.
Grazie ancora
“I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile.”
Albert Einstein
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 15 ospiti