[RISOLTO] Errore DONE in script!!!

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[RISOLTO] Errore DONE in script!!!

Messaggioda ducarpit » martedì 14 marzo 2017, 13:15

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, 10: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
Avatar utente
ducarpit
Prode Principiante
 
Messaggi: 164
Iscrizione: ottobre 2015
Desktop: Unity
Distribuzione: Ubuntu 17.10 64bit
Sesso: Maschile

Re: Errore DONE in script!!!

Messaggioda melfnt » martedì 14 marzo 2017, 19:48

ducarpit Immagine 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
melfnt
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1184
Iscrizione: ottobre 2011

Re: Errore DONE in script!!!

Messaggioda crap0101 » mercoledì 15 marzo 2017, 21:00

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
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8149
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile

Re: Errore DONE in script!!!

Messaggioda ducarpit » domenica 19 marzo 2017, 10:28

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
Avatar utente
ducarpit
Prode Principiante
 
Messaggi: 164
Iscrizione: ottobre 2015
Desktop: Unity
Distribuzione: Ubuntu 17.10 64bit
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 6 ospiti