Io ho provato un here document su script come hai indicato nel primo post e non ho avuto problemi di sorta.
codice:
[sergio@winnie ~/test/ftp_site]$ ls
script.sh
[sergio@winnie ~/test/ftp_site]$ cat script.sh 
ftp -n ${1} << END_SCRIPT
user ${2} ${3}
binary
ls 
get index.html
END_SCRIPT
[sergio@winnie ~/test/ftp_site]$ bash script.sh sito user password
-rw-r--r--   1 (?)      (?)           974 Jan 17 20:38 index.html
[sergio@winnie ~/test/ftp_site]$ $ ls
index.html  script.sh
[sergio@winnie ~/test/ftp_site]$
ricontrolla le variabili, ecc.

ciao