Looping/Reading file contents not working


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Looping/Reading file contents not working
# 8  
Old 01-31-2013
It might be that sqlplus makes the shell exit somehow so that the script is not run to the end. Put some output before and after the "sqlplus" call and find out if this is the case. Something like:

Code:
print - "before ....."
sqlplus .....
print - "after ....."

If the second "print" is not executed this would confirm my suspicion.

Also check which "sqlplus" you are executing and which type of file it is. It could be: a binary, an alias, a link, a shell function, ... Sometimes the "PATH" variable is corrupted and you don't execute what you believe you do. Use "which" to find out what you really execute and how.

Also start the script with full tracing on. Replace the shebang (you [i]do] use a shebang, no?) to (add "-xv"):

Code:
#! /bin ksh -xv

Unfortunately you are on your own, as nobody has your environment. Again: try to isolate the problem by testing one part of the script after the other to be OK. Eventually you will close in and finally find the culprit. Just have patience.

I hope this helps.

bakunin
# 9  
Old 01-31-2013
Why do you have it as test/test123@$dbname for user and pswd?
use this:
Code:
sqlplus -S  ${USERID}/${PASSWD}@${dbname} << EOF

# 10  
Old 01-31-2013
Works for me with a cpl of minor tweaks on SUN against Oracle 11g:
Code:
 
$ cat x.dat
DB1
DB2
DB3
DB4
$
$ cat x
#!/bin/ksh
dbcontent=x.dat
echo "Enter userid"
read USERID
echo "Enter passwd:"
stty -echo
read -s PASSWD
stty echo
while read dbname
do
#Connect to SQLPlus
sqlplus -S ${USERID}/${PASSWD}@${dbname} << EOF
select ora_database_name from dual;
prompt my name is $USERID and my password is $PASSWD;
exit;
EOF
done < $dbcontent
exit 0
$
$ ./x
Enter userid
myusername
Enter passwd:
<NUNYO_BUSINESS>
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB1.WORLD
my name is MYUSERNAME and my password is NUNYO_BUSINESS
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB2.WORLD
my name is MYUSERNAME and my password is NUNYO_BUSINESS 
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB3.WORLD
my name is MYUSERNAME and my password is NUNYO_BUSINESS 
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB4.WORLD
my name is MYUSERNAME and my password is NUNYO_BUSINESS 
$

# 11  
Old 01-31-2013
That's interesting. I have the exact same script and it does not work for me. I am on HP-UX 11.31. I don't see any tweaks in your script. Where did you make the changes?
# 12  
Old 01-31-2013
Try this method which starts one instance of SQL/Plus as a co-process. Eliminates the overhead of starting/stopping sqlplus for each database. Of course there is no error handling here but if you do some searching in the forums here you will find other examples.
Code:
 
$ cat xx
#!/bin/ksh
dbcontent=x.dat
echo "Enter userid"
read USERID
echo "Enter passwd:"
stty -echo
read -s PASSWD
stty echo
 
## Start sqlplus in a co-process.
sqlplus -S ${USERID}/${PASSWD} |&
 
## If an interrupt signal is received, close the co-process.
trap 'print -p "exit"' 0 2 3 9 15
 
## Read the list of databases a line at a time.
while read dbname
do
  ## Send commands to the co-process with print -p.
  print -p "connect ${USERID}/${PASSWD}@${dbname}"
  print -p "select ora_database_name from dual;"
  print -p "prompt my name is $USERID and my password is $PASSWD;"
  print -p "prompt DONE" # Indicates end of commands.
 
  ## Read all of the output from the above commands a line at a time into a variable
  ##  called "output".
  while read -p output
  do
     ## If DONE is read, we know we are at the end of expected output so move on.
     if [[ "$output" == "DONE" ]]; then
       break
     else
       print -- "$output"  # Otherwise, print the line to STDOUT.
     fi
  done
done < $dbcontent
 
## Close sqlplus.
print -p "exit;"
 
exit 0
$
$ ./xx
Enter userid
MYUSERNAME
Enter passwd:
<NUNYO_BUSINESS>
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB1.WORLD
 
my name is MYUSERNAME and my password is NUNYO_BUSINESS
 
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB2.WORLD
 
my name is MYUSERNAME and my password is NUNYO_BUSINESS
 
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB3.WORLD
 
my name is MYUSERNAME and my password is NUNYO_BUSINESS
 
ORA_DATABASE_NAME
--------------------------------------------------------------------------------
DB4.WORLD
 
my name is MYUSERNAME and my password is NUNYO_BUSINESS
$

---------- Post updated at 11:46 AM ---------- Previous update was at 11:38 AM ----------

Quote:
Originally Posted by DBnixUser
That's interesting. I have the exact same script and it does not work for me. I am on HP-UX 11.31. I don't see any tweaks in your script. Where did you make the changes?
Curly braces around variable names.

Last edited by gary_w; 01-31-2013 at 12:52 PM.. Reason: added "--" arg to the print command so the dahsed line will print.
# 13  
Old 01-31-2013
Thanks for all your help.

I did find one example that works for me.

Here it is:
http://nazimcricket.blogspot.com/201...-password.html
# 14  
Old 01-31-2013
Be advised that that method causes sqlplus to be started/stopped for each server. For a 3-server list that is probably not a big deal, but if the list had many servers listed or was on a machine that was heavily used, the impact of the resources used and overhead caused by all of that starting and stopping could have a greater impact on performance. Hence the second example of using sqlplus in a co-process.

A technique to keep in the back of your mind I suppose, in case you need it someday.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh Script, Reading A File, Grepping A File Contents In Another File

So I'm stumped. First... APOLOGIES... my work is offline in an office that has zero internet connectivity, as required by our client. If need be, I could print out my script attempts and retype them here. But on the off chance... here goes. I have a text file (file_source) of terms, each line... (3 Replies)
Discussion started by: Brusimm
3 Replies

2. Emergency UNIX and Linux Support

sed replace file contents by reading from another file

Hello, My input file1 is like this by tab-delimited chr1 mm10_knownGene stop_codon 3216022 3216024 0.000000 - . gene_id "uc007aeu.1"; transcript_id "uc007aeu.1"; chr1 mm10_knownGene CDS 3216025 3216968 0.000000 - 2 gene_id "uc007aeu.1"; transcript_id "uc007aeu.1"; ... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

3. Shell Programming and Scripting

Need help with looping through file contents

Hi, I have a several files with ".out" extension in a folder and each file has the below like contents .... appname: wonder1 ..... logname78.log logname88.log ..... CAP: 2 ..... appname: wonder54 ...... logname28.log logname58.log logname54.log ..... CAP: 3 ..... (4 Replies)
Discussion started by: mohtashims
4 Replies

4. Shell Programming and Scripting

Reading the contents of the file and splitting using ksh

We're using a ksh script for installing one product. I've another config file, I'd need to read this configuration file from my main script Content of the Configuration file:... (2 Replies)
Discussion started by: bittu129
2 Replies

5. Shell Programming and Scripting

Reading file contents until a keyword

Hi Guys, I need to read a file until I find a blank line. and in the next iteration I want to continue reading from the line I find a keyword. For ex: my file looks like PDS_JOB_ALIAS CRITERIA_ITEM_TYPE PDS_JOB_CRITERIA_ITEM CRITERIA_ITEM_TYPE First I want to read the file... (2 Replies)
Discussion started by: infintenumbers
2 Replies

6. Shell Programming and Scripting

While or For with looping contructs? to create files from contents of a text file

Hi so far I created this script: vi loop.beta.sh for i in `cat extract.filenames.tabc` do echo $i done>$i === This is the original text file. $ more tabc.txt -rwx------- 1 alice staff 1586 2010-11-05 02:27 request-key .conf -rwx------- 1 ted staff 126 ... (3 Replies)
Discussion started by: wolf@=NK
3 Replies

7. Shell Programming and Scripting

Formatting Report and Reading data and fetching the details from contents file

Data I was trying to write shell script which will be return the output in the below format First i was trying to do these using sed. sed -n '/.ksh/p' mainksh.ksh sed -e 's/*\(.*\)/\1/g' mainksh.ksh $RUN_DIR, $SUB_DIR and the variables which will be defined in the profile file. when i am... (0 Replies)
Discussion started by: rameshds
0 Replies

8. Shell Programming and Scripting

reading file,looping and limitation

I have 2 functions on AIX. Func_A () { .... .... } Func_B () { .... .... } And I have a abc.txt file (multiple lines) and I would like to read line by line and pass line by line to Func_A & Func_B. once Func_A is done,pass same value to Func_B and in the mean time get second line from... (5 Replies)
Discussion started by: Jang
5 Replies

9. Shell Programming and Scripting

Reading and printing one by one contents of a file

I have a file which has following contents: localhost_IP_SIP_1233026552455.xml localhost_IP_SIP_1233026552460.xml localhost_IP_SIP_1233026552467.xml localhost_IP_SIP_1233026552759.xml localhost_IP_SIP_1233026552969.xml localhost_IP_SIP_1233026552975.xml ... (2 Replies)
Discussion started by: Aditya.Gurgaon
2 Replies

10. Shell Programming and Scripting

Reading specific contents from a file and appending it to another file

Hi, I need to write a shell script (ksh) to read contents starting at a specific location from one file and append the contents at specific location in another file. Please find below the contents of the source file that I need to read the contents from, File 1 -----# more... (5 Replies)
Discussion started by: dnicky
5 Replies
Login or Register to Ask a Question