Today (Saturday) We will make some minor tuning adjustments to MySQL.

You may experience 2 up to 10 seconds "glitch time" when we restart MySQL. We expect to make these adjustments around 1AM Eastern Daylight Saving Time (EDT) US.


Stop script execution, when we encounter error


Login or Register 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 08: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 08: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 to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
To stop execution in cron
azherkn3
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... Shell Programming and Scripting
2
Shell Programming and Scripting
Stop execution of script if some condition fails
vivek1489
After my if condtion give rusult true then script should stop execution. Please advice...Thnaks in advance... Shell Programming and Scripting
1
Shell Programming and Scripting
how to stop execution of a script after one hour
mady135
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.... Shell Programming and Scripting
5
Shell Programming and Scripting
stop execution of script with in the script
dsdev_123
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... AIX
3
AIX
how to stop execution in for loop
useless79
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..... Programming
1
Programming

Featured Tech Videos