Understanding <<EOF


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Understanding <<EOF
# 1  
Old 01-20-2012
Understanding <<EOF

Hi all
I stuck with a problem. I want to understand the execution of the below code. Can any one please help me
Code:
`sqlplus username/passwd@DB << EOF
set serveroutput on
declare
begin
    sql_query;
end;
/
commit
/
quit
EOF`

My ques is why do we use EOF and how does it help.

Last edited by radoulov; 01-20-2012 at 07:11 AM.. Reason: Code tags!
# 2  
Old 01-20-2012
This notation is known as heredocs and it allows us enter code with quotation marks, apostrophes and backticks without having to escape them from the shell. The string after the << becomes a close quote string thus facilitating "strinifying" of code or text potentially containing shell interpolatable tokens
# 3  
Old 01-20-2012
You are using the Shell feature known as a "here-document". See the section about "<<" in the manual for your Shell.
The Shell will read up to the terminating word (which in your example is EOF) and present the contents on STDIN to the program which is reading from STDIN (which in your example is sqlplus).

EOF is a popular choice for the terminating word because it happens to be an acronym for End Of File and it does not occur as a command name in any mainstream computer language (including Oracle SQL). You will find on this board that many people use an exclamation mark for the terminating word. Those from a mainframe background sometimes use four asterisks because this was the convention on card-readers.

The code posted is a bit weird because the backticks are not needed or desirable. If the output was to be placed in an environment variable the backticks would be needed. There are a lot of examples on this board.

Personally I prefer to start the script with code to edit the SQL program and place the program into a file, then execute the program as a parameter to sqlplus. This makes debugging so much easier.
# 4  
Old 01-20-2012
@methyl : Can you please show me the sample example for what you are saying in last two lines..
# 5  
Old 01-20-2012
Using your example as an example for Shell purposes. I can't vouch for your sql code as I don't know what you are trying to do (and I don't understand the solidi).
In the commercial world we would not put the username and password on the command line but there is no harm on your private test machine.

Code:
# Prepare program
cat <<EOF >myprogram.sql
set serveroutput on
declare
begin
    sql_query;
end;
/
commit
/
quit
EOF
#

# Run program
sqlplus username/passwd@DB @myprogram.sql

This User Gave Thanks to methyl For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

confused with << EOF EOF

Hi friends , I am confused with << EOF EOF Most of the cases I found sqlplus $db_conn_str << EOF some sql staments EOF another exapmle is #!/bin/sh echo -n 'what is the value? ' read value sed 's/XXX/'$value'/' <<EOF The value is XXX EOF (1 Reply)
Discussion started by: imipsita.rath
1 Replies

2. Shell Programming and Scripting

Until eof do????

Hey! Can I write a routine that allows me to in a txt file check line by line until the end of file? something like until do ---some code--- done maybe it is a stupid question but I never learned shell scripts and I need this :p thanks in advance (1 Reply)
Discussion started by: ruben.rodrigues
1 Replies

3. Programming

Eof

How can I write EOF into a file? I tryed to do as follows: size=sizeof(EOF); end_of_file=EOF; write(fdMutexRichieste, &end_of_file, size); But it does non work correctly, becouse in the next cicle (using lseek(..., SEEK_END) of my code it seems to ignore my EOF and use the LAST... (5 Replies)
Discussion started by: DNAx86
5 Replies

4. Shell Programming and Scripting

What is << EOF

I'm trying to connect to oracle with the following code in the script: checksqlerror{ if echo $1 exit fi } $SQLPLUS username/password@schemaname checksqlerror "failed to connect to oracle" If I'm passing wrong schema name,instead of executing checksqlerror it stops and expects user... (2 Replies)
Discussion started by: BhawanaAggarwal
2 Replies

5. UNIX for Dummies Questions & Answers

\n after EOF

Hello all, I have unix file that ends with the following EOF '9999999999' I want to remove the '\n' character after EOF. What is the command that should be included in the script, before sending the file? will this work: $ echo "<99999999999>\c" >> <filename> thanks in advance. (3 Replies)
Discussion started by: priya12
3 Replies

6. Shell Programming and Scripting

Eof

hi, in a shell script i came accross the following bit of code 1.shift $(($OPTIND - 1)) 2.if ; then 3. cat << EOF >&2 4.Usage: $0 lockfilename 5.EOF 6. exit 1 7.fi I am not able to understand the meaning of lines(1,3,5). Can any one of u tell me the purpose of above said lines.... (1 Reply)
Discussion started by: ravi raj kumar
1 Replies

7. UNIX for Dummies Questions & Answers

Eof

I have written this code: code echo 'Now choose the file or files you want to merge your input with: \c' read filenames filelist="" for file in $filenames; do filelist="$filelist $file" done echo "Now that you've chosen these files ($filelist), please start typing: " until ; do paste -... (2 Replies)
Discussion started by: fiol73
2 Replies

8. UNIX for Dummies Questions & Answers

Eof

hello all, how end of a file is detected in UNIX system? does it make use of any special symbols to identify the EOF? :( thank you all (5 Replies)
Discussion started by: compbug
5 Replies

9. Shell Programming and Scripting

Please help with EOF

Hello, you are an awesome crowd! You answered my last questions, thank you sooo much! I am trying to write a korn shell script that will record the memory my application is using (HP-UX B.11.11) and I have this: if (( $APP > $THRESHOLD )) then echo "Warning message will display" cat... (2 Replies)
Discussion started by: satraver
2 Replies

10. Shell Programming and Scripting

EOF use

Hi, I'd like to access a windows directory from aix with samba client. To allow direct access (not interactive), i'm using EOF like: smbclient \\\\winserver\\windir 'passwd' -U usersmb << EOF cd subwindir put myfile EOF The access is correct but does somebody know how to trap errors... (1 Reply)
Discussion started by: jo_aze
1 Replies
Login or Register to Ask a Question