I have multiple functions in my script and I'm trying to capture stdout from some of them, but I also do some error checking in them (in the functions that output something to their stdout that needs capturing) and I need to be able to end the entire script with an error message.
KSH version I'm using is the default that comes with AIX 6.1 (6100-02-02-0849), which is M-11/16/88f.
Consider the following example:
So both 'func1' calls at the bottom of the script are processed. Because I'm capturing the stdout of 'func2' function, the exit seems to be treated as return. Same problem exists when I try to re-direct stdout (using pipe, i.e. a call like this: func2 | tr '[a-z]' '[A-Z]' from func1 has the same unintended effect), basically, every time I tap into stdout, the exit doesn't stop the entrie script. I'd also prefer not to use temporary files or anything like that (that would also be redirecting stdout so it may not work either, but I haven't tried it yet, as I consider it untidy). I would also like to avoid checking for retrun code of the function outside it, I do all error checking and messaging inside the function that outputs things on stdout, so the neatest approach is to simply exit the script from that function if critical error occurs. How do I make the exit statement always terminate the script?
Thanks in advance,
--
Greg.
Last edited by Franklin52; 02-06-2009 at 06:41 AM..
Reason: adding code tags
Is it ok to use exit() inside a signal handler?
I catch SIGUSR1 in a signal handler and I try to close a file and then exit. The result is inconsistent. Sometimes the process exit and sometimes it returns to the original state before the signal handler was invoked.
Perhaps exit is not legal in... (8 Replies)
Hi All,
I want to use EXIT command in a particular scenario.
In my script,its like that:-
if($vairable -eq 1);then
do this thing
do this
do this
fi
if($var2 -eq 1);then
do this
do this
fi
like this there are three four if conditions.
now I want is that if second condition is... (2 Replies)
Hi,
Using AIX 5.3 and Ksh.
/>ls -al /usr/bin/ksh
-r-xr-xr-x 5 bin bin 237420 Apr 10 2007 /usr/bin/ksh
/>
I recently started working for a new employer. I have written UNIX K-Shell scripts for many years and have never had this particular issue before. Its perplexing me.
I have... (2 Replies)
Hi all,
I'm trying to run an sql inside a loop which looks like this
#!bin/ksh
while IFS=, read var1 var2
do
sqlplus -s ${USERNAME}/${PASSWORD}@${ORACLE_SID} << EOF
insert into ${TABLE}
(
appt_date
)
values
(
'${var1 }'
);
... (6 Replies)
is there a way to compare two files using diff (ex: diff 1.txt 2.txt) in an if statement?
I read that the exit status of diff is 0 if the files contain the same content. 1 if they're different. So what I am attempting is basically:
if ; then
echo "they're the same"
else
... (2 Replies)
Hi,
Is there a way to exit from a subcommand, which is a function in my example below?
#!/bin/ksh
function exitFunction {
if ]; then
echo "success"
elif ]; then
echo "failed"
exit 1 # the exit problem
fi
exit 0
}
... (2 Replies)
Below is my script that is function properly per my conditions but I am facing one problem here that is when one function fails then Iy should not check other functions but it calls the other function too So anyone can help me how could i achieve this?
iNOUT i AM GIVING TO THE... (1 Reply)
Hi,
I am having script which contains many functions. Need to print each function name at the starting of the function. Like below,
functionname()
{
echo "functionname"
commands....
}
I've tried like below,
func=`grep "()" scriptname | cut -d "(" -f1`
for i in $func
do
nawk -v... (4 Replies)
I am trying to write a shell script, which looks like
#!/usr/bin/env bash
#set -e
RED="`tput setaf 1`"
GREEN="`tput setaf 2`"
BLUE="`tput setaf 4`"
NORM="`tput sgr0`"
pushd ${MY_GIT_TOP}/body/Ue/test >/dev/null #MY_GIT_TOP is set my by gitenv
make test_trinity_svp
pushd... (8 Replies)
Hi All,
Good Day, seeking for your assistance on how to not perform my 2nd, 3rd,4th etc.. function if my 1st function is in else condition.
#Body
function1()
{
if
then
echo "exist"
else
echo "not exist"
}
#if not exist in function1 my all other function will not proceed.... (4 Replies)
Discussion started by: meister29
4 Replies
LEARN ABOUT SUSE
autouse
autouse(3pm) Perl Programmers Reference Guide autouse(3pm)NAME
autouse - postpone load of modules until a function is used
SYNOPSIS
use autouse 'Carp' => qw(carp croak);
carp "this carp was predeclared and autoused ";
DESCRIPTION
If the module "Module" is already loaded, then the declaration
use autouse 'Module' => qw(func1 func2($;$));
is equivalent to
use Module qw(func1 func2);
if "Module" defines func2() with prototype "($;$)", and func1() has no prototypes. (At least if "Module" uses "Exporter"'s "import",
otherwise it is a fatal error.)
If the module "Module" is not loaded yet, then the above declaration declares functions func1() and func2() in the current package. When
these functions are called, they load the package "Module" if needed, and substitute themselves with the correct definitions.
WARNING
Using "autouse" will move important steps of your program's execution from compile time to runtime. This can
o Break the execution of your program if the module you "autouse"d has some initialization which it expects to be done early.
o hide bugs in your code since important checks (like correctness of prototypes) is moved from compile time to runtime. In particular,
if the prototype you specified on "autouse" line is wrong, you will not find it out until the corresponding function is executed. This
will be very unfortunate for functions which are not always called (note that for such functions "autouse"ing gives biggest win, for a
workaround see below).
To alleviate the second problem (partially) it is advised to write your scripts like this:
use Module;
use autouse Module => qw(carp($) croak(&$));
carp "this carp was predeclared and autoused ";
The first line ensures that the errors in your argument specification are found early. When you ship your application you should comment
out the first line, since it makes the second one useless.
AUTHOR
Ilya Zakharevich (ilya@math.ohio-state.edu)
SEE ALSO perl(1).
perl v5.12.1 2010-04-26 autouse(3pm)