O formato correto deve ser:
#!/bin/sh
cat <<EOF > myfile
#!/bin/sh
command1 \
command2 \
command3 \
EOF
Duas alterações foram feitas:
- escape do $ usando \
- marque
<<EOF
no início da seção que deve ser gravada em myfile (consulte aqui para saber mais info)
Depois de executar este script, o resultado de
cat myfile
#!/bin/sh command1 $1 command2 $2 command3 $3