04-26-2009
Quote:
Originally Posted by
prathima
I want to capture actual error message in case the commands I use in my shell script fails.
For eg:
ls -l abc.txt 2>>errorlog.txt
In this case I understand the error message is written to the errorlog.txt and I assume its bacause the return code from the command ls -l abc might return 2 if "abc" doesnt exists.
Quote:
Here, 2 is not the return code. 2 is the File descriptor value(FD). By default, the standard inputs FD is 0, std o/p is 1 and std error is 2. That is the reason why your std errors are getting redirected to the errorlog file. Therefore any error (may be file not exits or permission issue or anything) will be redirected to the error file
My question is: How about if the command return non zero return code and is not equal to 2?
I want to do something like this:
ls -l abc.txt
if [$? -ne 0]
then
echo $errorMessage >> errorlog.txt
fi
where I want actual error message that the command has returned to be written to errorlog.txt. Just for understanding I used $errorMessage but I assume there should be some means to capture the actual error message which can later be stored in errorMessage or written directly to errorlog.txt.
Can someone please help?
Quote:
So for printing the error message, you dont need a IF loop. It is generally use, if you want to do something different
cheers,
Devaraj Takhellambam
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi All,
I have a log file which consists of log messages as follows ->
GLOBALCALLID_CLUSTERID_B NEXT * , O(") CHARACTER
JOINONBEHALFOF NEXT * , O(") CHARACTER
Record 1: Rejected - Error on table IFA_MMV_CDR, column CDRRECORDTYPE.... (1 Reply)
Discussion started by: rahulrathod
1 Replies
2. Shell Programming and Scripting
Im trying to execute application and its return code is below
IF Status code=o
echo "........"
else Staus Code =-2 DJRE
then echo "......"
Can any one help me how to handle the status code and echo some message. (12 Replies)
Discussion started by: laknar
12 Replies
3. Solaris
AIM- Install Oracle 11g on Solaris using VMWare
Steps
1.Logged on as root
2.Created subfolders à /usr/local/bin & /usr/local/bin/gcc
3.Downloaded gcc & libiconv & unzipped them on my harddrive & burnt them on CD
4.Copied files from CD to /usr/local/bin/gcc
5.Terminal (root) à pkgadd -d... (8 Replies)
Discussion started by: Ackers
8 Replies
4. Shell Programming and Scripting
Guys any tips on printing a certain error message to stderr and exiting should a command fail within a ksh script? I'm trying to null some output files.
Touch isn't suitable as i need to null them.
print "" > file isn't suitable as i need to check elsehere for if they are 0bytes or not.
... (5 Replies)
Discussion started by: lavascript
5 Replies
5. Shell Programming and Scripting
Hi,
I googled a bit, but could not find the answer to my problem.
But I am sure it is a common issue.
I have this code:
#!/bin/perl -w #-d
use strict;
sub remsh_test()
{
my $host = $_;
printf "\n----\n\n";
printf "remsh to $host with system call\n";
my $result = system... (3 Replies)
Discussion started by: ejdv
3 Replies
6. Shell Programming and Scripting
Hello All,
I am getting the following error message when trying to execute the following script.
AWK=/usr/bin/awk
TR=/usr/bin/tr
SED=/usr/bin/sed
CAT=/usr/bin/cat
MAILFILE=/home//nightly_jobs.tmp
mailto=xxx@gmail.com
Nigh_Status = `db2 "select TYPE from ETL.LOCK where STATUS <> 0 and... (12 Replies)
Discussion started by: NARESH1302
12 Replies
7. Shell Programming and Scripting
Hi
I have a requirement to write a script to capture all errors in a Logfile and send the file in email.
If there is any error occurred the subject of email will be ERROR , If there are no error occurred the subject of email will be SUCCESS.
So I created a Log file and put the Appropriate... (2 Replies)
Discussion started by: dgmm
2 Replies
8. Solaris
I am trying to create a live image of solaris 11.1.
I have used #pkg image-update to upgrade from 11 to 11.1 already. (since only 11.1 can make images of 11.1 due to using new grub)
then from within 11.1 I used pkg install install distribution-constructor
to get latest usbcopy that should be... (1 Reply)
Discussion started by: taltamir
1 Replies
9. Shell Programming and Scripting
Hi All,
I have a requirement to execute multiple scripts (say 4) one after the other in one script and capture log details and error messages in a log file below
LOG_FILE= FILE.`date ++"%Y%m%d%H:%M:%S"`
Script 1 : File_Checkr.sh
Script 2 : Pre_Validation.sh
Script 3 : Testing.sh
Script... (12 Replies)
Discussion started by: Deena1984
12 Replies
10. Shell Programming and Scripting
I have two linux servers viz 12.7.44.18 and 12.7.45.18
I wish to ssh from both these server to a destination AiX server 12.7.33.18
The ssh works from 12.7.44.18 -> 12.7.33.18 but fails from 12.7.45.18 -> 12.7.33.18
The openssl version on both linux source 12.7.44.18 and 12.7.45.18 is the... (7 Replies)
Discussion started by: mohtashims
7 Replies
LEARN ABOUT CENTOS
shell-quote
SHELL-QUOTE(1) User Contributed Perl Documentation SHELL-QUOTE(1)
NAME
shell-quote - quote arguments for safe use, unmodified in a shell command
SYNOPSIS
shell-quote [switch]... arg...
DESCRIPTION
shell-quote lets you pass arbitrary strings through the shell so that they won't be changed by the shell. This lets you process commands
or files with embedded white space or shell globbing characters safely. Here are a few examples.
EXAMPLES
ssh preserving args
When running a remote command with ssh, ssh doesn't preserve the separate arguments it receives. It just joins them with spaces and
passes them to "$SHELL -c". This doesn't work as intended:
ssh host touch 'hi there' # fails
It creates 2 files, hi and there. Instead, do this:
cmd=`shell-quote touch 'hi there'`
ssh host "$cmd"
This gives you just 1 file, hi there.
process find output
It's not ordinarily possible to process an arbitrary list of files output by find with a shell script. Anything you put in $IFS to
split up the output could legitimately be in a file's name. Here's how you can do it using shell-quote:
eval set -- `find -type f -print0 | xargs -0 shell-quote --`
debug shell scripts
shell-quote is better than echo for debugging shell scripts.
debug() {
[ -z "$debug" ] || shell-quote "debug:" "$@"
}
With echo you can't tell the difference between "debug 'foo bar'" and "debug foo bar", but with shell-quote you can.
save a command for later
shell-quote can be used to build up a shell command to run later. Say you want the user to be able to give you switches for a command
you're going to run. If you don't want the switches to be re-evaluated by the shell (which is usually a good idea, else there are
things the user can't pass through), you can do something like this:
user_switches=
while [ $# != 0 ]
do
case x$1 in
x--pass-through)
[ $# -gt 1 ] || die "need an argument for $1"
user_switches="$user_switches "`shell-quote -- "$2"`
shift;;
# process other switches
esac
shift
done
# later
eval "shell-quote some-command $user_switches my args"
OPTIONS
--debug
Turn debugging on.
--help
Show the usage message and die.
--version
Show the version number and exit.
AVAILABILITY
The code is licensed under the GNU GPL. Check http://www.argon.org/~roderick/ or CPAN for updated versions.
AUTHOR
Roderick Schertler <roderick@argon.org>
perl v5.16.3 2010-06-11 SHELL-QUOTE(1)