Aqui documentos.
cat <<EOF
seguido por várias linhas de texto, seguidas pela string literal EOF
em uma nova linha, NÃO recuada. A porção entre os EOFs é passada para o comando como entrada padrão. Se 'EOF' for 'citado', as substituições NÃO serão feitas; do contrário eles são. Consulte < < - para a variedade indentada.
Então ..
ftp -inv (IP) <<'EOF'
user Username Abcd$1234
"lines to ftp file"
bye
EOF
deve funcionar e tratará $
como literal $
. Não fará referência a ela como sendo uma variável.