what does <<! mean on the end of a command

Hi, just a quick question really on what the <<! at the end of a line actually means ? as you can see i have an oracle startup script that has an sqlplus command. im making a guess here, so correct me if im wrong but the "startup" and "exit" commands that follow are sqlplus command and not unix commands, so i am i right in saying the <<! basically allows app specific commands to follow ??

PS , I cant test this because its a production environment

#!/bin/bash
cd /export/home/oracle
. oracle9.env
sqlplus "sys/password as sysdba" <<!
startup
exit

You are correct. It's called a here document, which does special I/O redirection to the interactive program, in this case sqlplus. Read more about it Here Documents

thanks for that, just one more question , the link you posted has a << and then the command to send, but what does the "!" do at the end?

I'm sure at some point later in your script you will see a line with a "!" in it. The way the here document works, you can basically put anything there -- you just need to tell the shell where it begins and where it ends. For example you could just as easily have done this:

#!/bin/bash
cd /export/home/oracle
. oracle9.env
sqlplus "sys/password as sysdba" <<THISISAHEREDOC
startup
exit
THISISAHEREDOC