Errore in uno script in bash

Ciao Giorgio,

non ho testato il programma, ma penso l'errore sia l'indentazione del "prova"
dopo i 2 commandi psql.
La shell si aspetta un "prova" all'inizio della riga che finisce l'input al
comando psql. Invece trova un " prova" e passa oltre.

Hai 2 possibilità
1) mantieni il comando "<<prova" com'è e togli TUTTI i spazi PRIMA del
"prova" che chiude l'input
2) scrivi un "psql ... <<-prova" e puoi lasciare tutti gli spazi davanti al
"prova".

Thomas

PS:
Convezionalmente si usa "EOF" e non "prova"... :slight_smile:

Ho provato a modificarlo come hai consigliato tu (almeno spero), ma mi
da' ancora lo stesso errore.
Cosi e' come ho modificato:
#!/bin/bash
if pidof pmacctd > /dev/null; then
    /etc/init.d/pmacct stop
    psql pmacct <<-EOF
        \copy acct to /tmp/psql
    EOF
    psql pmacct -f /root/prova.pgsql
    scp /tmp/psql sniffer:/tmp/psql &>prova1.log
    /etc/init.d/pmacct start

else
    psql pmacct <<-EOF
        \copy acct to /tmp/psql
    EOF
    psql pmacct -f /root/prova.pgsql
    scp /tmp/psql sniffer:/tmp/psql &>prova1.log
fi
L'errore e' sempre lo stesso cioe'
./prova1.sh: line 18: syntax error: unexpected end of file
Grazie comunque
ciao

Ho detto una cavolata prima. Da "man bash":

       If the redirection operator is <<-, then all leading tab
       characters are stripped from input lines and the line con­
       taining delimiter. This allows here-documents within
       shell scripts to be indented in a natural fashion.

Quindi devi usare solo tabulatori prima del "EOF".

Saluti,
Thomas

Grazie cosi' ha funzionato. Non mi sarei mai aspettato un problema cosi'
Ciao