Stop script execution, when we encounter error


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Stop script execution, when we encounter error

Team,
Im new to shell scripting please help in below issue:
Considering scenario i have 1.sql,2.sql,3.sql and 4.sql . If my second script fails my loop should come out and should not execute 3.sql and 4.sql.

Here is my code.
Code:
#! /bin/bash
echo "exit" | user/password | grep Connected > /dev/null
if [ $? -eq 0 ]
then
   echo "Passed"
   while read file
   do
   echo "Executing file $file..."
   output=`user/password << EOF >> test.log
   @/home/$file`
   done < /home/master.sql
else
   echo "Failed"
   
fi


Last edited by joeyg; 03-11-2019 at 09:46 AM.. Reason: Highlight the range of code, and then place CodeTags. This manintains the code formatting.
# 2  
From the thread title: "Stop script execution, when we encounter error", reading what you have posted, I am totally lost...
Quote:
Considering scenario i have 1.sql,2.sql,3.sql and 4.sql
OK where do i see them?
Quote:
If my second script fails my loop should come out and should not execute 3.sql and 4.sql.
So what is the script you posted?
Now even this script puzzles me as I cant see how it works...
Do you mind explaining what this first line is supposed to do?
Code:
echo "exit" | user/password | grep Connected > /dev/null

Then
lets say the following works:
Code:
if [ $? -eq 0 ]
then
   echo "Passed"
   while read file

Where is file set? ...
# 3  
Quote:
Originally Posted by vbe
From the thread title: "Stop script execution, when we encounter error", reading what you have posted, I am totally lost...
OK where do i see them?

So what is the script you posted?
Now even this script puzzles me as I cant see how it works...
Do you mind explaining what this first line is supposed to do?
Code:
echo "exit" | user/password | grep Connected > /dev/null

Then
lets say the following works:
Code:
if [ $? -eq 0 ]
then
   echo "Passed"
   while read file

Where is file set? ...
Hi vbe,
Code:
   while read file
   do
   echo "Executing file $file..."
   output=`user/password << EOF >> test.log
   @/home/$file`
   done < /home/master.sql

Each time through this loop, the variable named file is set by the read command to contain the contents of a line read from the file /home/master.sql. (But, that would only be true if the here-document inside that while read loop was terminated. Oh, well.)

Having said that, I agree with you that I have no idea why finding the string Connected in the output from the utility named user/passwd when it reads a line from standard input that is exit would provide any reason for reading names of files from a file named /home/master.sql.

And, since the here-document terminator (i.e., EOF) does not appear anywhere in the code provided in post #1, this script can't possibly be working. I'm afraid preethi87 has failed to tell us several things that are important before we will be able to help debug the problem that was specified.
This User Gave Thanks to Don Cragun For This Post:
# 4  
Sorry team , let me provide more info..
1.Firstly, it checks for the sql db connection. If connection is success it will execute script/file , if not it prints connection failed and wont execute any scripts.
2.Secondly all my files content resides in sqlfiles, whereas just filename is given in master.sql
3.Finally, if any of the script failed it should come out from the loop.
Eg: if 2.sql is failed with some error
Code:
SP2-0734: unknown command beginning "elect * fr..." - rest of line ignored.

remaining file/script should not get executed and come out of the loop.

Moderator's Comments:
Mod Comment Please do wrap your samples in CODE TAGS as per forum rules, see how I wrapped your given error, use [CODE]your samples/errors/codes/etc[/CODE] as an example.

Last edited by Don Cragun; 03-12-2019 at 09:44 AM.. Reason: Fix mismatched CODE/ICODE sample tags.
# 5  
In your SQL, do you have WHENEVER ERROR EXIT .something early on? The syntax allows you to set an exit code for your script to pick up, something like this perhaps:-
Code:
:
:
deck=sql1.sql                           # The deck of SQL commands you want to run
   sqlplus / <<-EOSQL                   # Logs on with external authentication.  For remote connection use sqlplus <<-EOSQL and include the credentials in the here document
   WHENEVER SQLERROR EXIT 1;            # Set the equivalent of a shell trap
   @$deck ;                             # Run what you want to do.
   exit ;                               # Terminate sensibly
EOSQL                                   # End the here document.
RC=$?

if [ $RC -ne 0 ]
then
   echo "Take some action because ${deck} failed with return code ${RC}"
fi

It's not tested at all because I no longer have an Oracle database to connect to. I might even have the here document wrong, but you get the idea.

I inherently shy away from putting credentials on the same line as the sqlplus because that would make them visible to a ps command whilst your code is running. There are plenty of examples on the board on how to do it properly.




I hope that this helps,
Robin
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #642
Difficulty: Easy
The first full release of NeXTSTEP 1.0 shipped on September 18, 1988.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

To stop execution in cron

hi guys i have a question my cron should start executing minute but it sould stop execute only i have tried tis 10 * * * * /home/sample.sh >> /data/band/cron_$(date+|%Y|m|d).log (2 Replies)
Discussion started by: azherkn3
2 Replies

2. AIX

Unmirrorvg problem encounter

good Day everyone! I issue a command unmirrorvg unmirrorvg appvg hdisk3 There's no response whether it is successfully unmirror but when I check the lsvg -l appvg, it seems the hdisk3 still active. Then I issues another reducevg command to exclude out the disk from vg ... (6 Replies)
Discussion started by: ckwan
6 Replies

3. Shell Programming and Scripting

Syntax error in sh script execution

Script: #!/sbin/sh echo "Welcome to my First Script" echo "Enter a word" read PASS if then echo "You are correct" elif then echo "Thats incorrect" else echo "Bye" fi When i run the script shell says: Syntax error at line 7:'elif' is not expected I ran through some old posts and... (3 Replies)
Discussion started by: Amit Kulkarni
3 Replies

4. Shell Programming and Scripting

Stop execution of script if some condition fails

After my if condtion give rusult true then script should stop execution. Please advice...Thnaks in advance (1 Reply)
Discussion started by: vivek1489
1 Replies

5. Shell Programming and Scripting

Execution error with awk script

Hi, I run an awk script and I got the error attached below: here are the lines that the compiler point to as an error: duration = timeEnd1-timeBegin1; print "Transmission: type of traffic " flow1 ; print “ - Total transmitted bits = ” totalBits1 ” bits”; print “ - duration = ”... (2 Replies)
Discussion started by: ENG_MOHD
2 Replies

6. Shell Programming and Scripting

how to stop execution of a script after one hour

I have a shell script that writes some data in a file. I want to stop the script after one hour from start of execution using "EXIT 1". how to do it. I don't want to use CRONTAB. (5 Replies)
Discussion started by: mady135
5 Replies

7. Shell Programming and Scripting

Stop load script if error found...

Hi all, Is there any command in Unix, which will stop the load process if any error is found in the i/p file? I am trying to load 5 files sequentially. A then B then C then D then E end; 1) If A encounter's any error while data load, the load process should stop, and it should not... (5 Replies)
Discussion started by: msrahman
5 Replies

8. AIX

stop execution of script with in the script

Hello i want to incorporate of piece of code in the shell script which checks whether same script is already running or not. If it is already running i want to come out (exit) if its not then continue with the execution of the script. Any help would be very much appreciated Thanks (3 Replies)
Discussion started by: dsdev_123
3 Replies

9. Programming

how to stop execution in for loop

Hi all, I am working on a c source code nearly 2000 line . it contains one big for( i=0; i< 200 ; i++ ) loop of around 600 lines could any tell me how to break the execution of prog when the value of i is 50 in for loop so that i can check inside the loop. Thanks.. (1 Reply)
Discussion started by: useless79
1 Replies

10. Shell Programming and Scripting

error during the execution of script

Hi, I have a cron job which executes daily once 9 PM. The script is like if then TYPE=OC elif then TYPE=i elif then TYPE=mmc elif then TYPE=CB elif then TYPE=oth fi (1 Reply)
Discussion started by: surjyap
1 Replies

Featured Tech Videos