Visit Our UNIX and Linux User Community


Return Codes...


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Return Codes...
# 1  
Old 10-23-2013
Return Codes...

Not sure if this is of any use but......

I was messing around with getting return codes greater than 255 for special usage...

Of course the code could be made simple but in this code the new stored return code
is generated as exit is progressing...
Code:
#!/bin/sh
# Real and imaginary return codes...
> /tmp/return.code
imaginary_return_code=1234567890
RC=0
while true
do
	# Do some stuff and......
	# Generate your real RC value to exit with 0 to 254.
	# Generate your imaginary value to exit with 255 to 2147483647, add text too IF required.
	if [ $imaginary_return_code -ge 255 ]
	then
		RC=255
	fi
	if [ $RC -eq 255 ]
	then
		exit $RC $( printf "Error number $imaginary_return_code:- Idiot at the keyboard\!" > /tmp/return.code )
	else
		exit $RC
	fi
done

Results on OSX 10.7.5, default shell...
Code:
Last login: Wed Oct 23 22:15:16 on ttys000
AMIGA:barrywalker~> ./RC.sh
AMIGA:barrywalker~> RC="$?"
AMIGA:barrywalker~> echo "$RC"
255
AMIGA:barrywalker~> read RC < /tmp/return.code
AMIGA:barrywalker~> echo "$RC"
Error number 1234567890:- Idiot at the keyboard!
AMIGA:barrywalker~>


Last edited by wisecracker; 10-23-2013 at 07:30 PM.. Reason: Typo...
# 2  
Old 10-23-2013
It's not clear what you are doing or what you are asking. Give more context and expected behavior.
This User Gave Thanks to blackrageous For This Post:
# 3  
Old 10-23-2013
I don't see any questions in this post but in bash, an exit value of 1234567890 will always return 210 (1234567890 modulo 256).
# 4  
Old 10-23-2013
Exit codes are 0-255, feeding it a 256 will give you a 0. The output stream is usually used for the actual data.
# 5  
Old 10-23-2013
The exit status from a command is the result of the syscall wait() or waitpid(). When the child process returns it pushes a value onto the stack - the parent reads the return value.
But it only sees the lower eight bits of the value -- 0 -> 255 if you consider the return value an integer.

I would commend to your attention sysexits.h which is an attempt to do what you seem to want to do.

Exit status - Wikipedia, the free encyclopedia
These 2 Users Gave Thanks to jim mcnamara For This Post:
# 6  
Old 10-24-2013
Hi guys...

This was just an idea...

I wasn't actually asking anything. I was experimenting with generating an error code
system of my own with values outside of an 8 bit range.
I used the real 255 exit code as 'number out of range' flag and then generate a string
whilst exit is in process. This string was originally a number, but I decided to make it
a string instead, purely for fun.

It is immediately stored for checking later.

It works for me and I thought it might work for others.

Anyhow thanks for the feedback.

Perhaps I shouldn't have posted it...
# 7  
Old 10-24-2013
Quote:
Originally Posted by wisecracker
This was just an idea...

I wasn't actually asking anything. I was experimenting with generating an error code
system of my own with values outside of an 8 bit range.
I used the real 255 exit code as 'number out of range' flag and then generate a string
whilst exit is in process. This string was originally a number, but I decided to make it
a string instead, purely for fun.
I am not sure if this will work in any way: return codes are not coming out of thin air, but the result of a system call, as jim mcNamara has explained. It can't give you back more than it ought to. It is defined as an unsigned 8-bit integer, so it can't deliver a 16- (or 32-, 64-, ...) bit number, a string or whatever. This would mean that this value has to be put on the stack and then pulled off it by the wait() or waitpid()-function. As the function would not know that it is expected to get that off the stack it won't do it and the stack would be (and stay) subsequently corrupted.

If you want to have extended exit-messages of any sort - strings, numbers, whatever - you will have to use the classical means of conveying such messages: interprocess communication (aka semaphores, shared memory segments, ... - take your pick) or process-to-process I/O, like file descriptors and/or named pipes. Write to <stdout>, <stderr>, etc. and intercept this with pipes, I/O-redirection and the like.

Another option is to write to a log file of some sort and have that parsed from the calling process.

Quote:
Originally Posted by wisecracker
Perhaps I shouldn't have posted it...
There is no harm done in discussing anything and i am convinced this board won't go down from 1k characters of non-conclusive discussion. Still, i think you should post such topics (and the likes - you seem to enjoy exploring the limits of the OS in general and the shell in specific) not in the beginner forum. This is clearly not the stuff someone who learned the shell yesterday asks first. Please consider moving to the experts forum for topics like this.

I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
 

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

Oracle return codes?

Having searched high and low through Oracles documentation, I came to think that they're very scripting-averse, as there's (apparently) no list of possible return/exit codes for their various command line utilities. Is anyone here in possession of such a list, or knows where to find one? It... (16 Replies)
Discussion started by: pludi
16 Replies

2. Shell Programming and Scripting

Different Return Codes

Hi, I wanted to know the significance of different return codes when we do echo $? I know when $? returns 0 the command has worked successfully. but what does $? = 1, 2, 3 etc. signify. Thanks in advance for the help !!! (3 Replies)
Discussion started by: aarti.popi
3 Replies

3. Shell Programming and Scripting

sftp return codes

sftp -v b $putlist $SFTP_ID@TARGET_SERVER How can I get a return code if fails to put the file? sftp -v b $getlist $SFTP_ID@TARGET_SERVER How can I get a return code if fails to put the file? (1 Reply)
Discussion started by: TimHortons
1 Replies

4. UNIX for Dummies Questions & Answers

Displaying Return Codes

This is a high-level explanation, if more details are needed, please do not hesitate to ask. I have a set of .ctl files which I want to execute: AV1.ctl AV2.ctl AV3.ctl I have a script which has a for loop in it: for filename in AV1 AV2 AV3 do . execute_another_script.sh done ... (2 Replies)
Discussion started by: hern14
2 Replies

5. Shell Programming and Scripting

help with return codes

Hi In an unix script I am using an Perl one liner perl -i -ne '-----' If the perl one liner fails i am not able to catch the return code. It always give 0 as return code. Can you tell me how can i catch the return code perl -i -ne '---' RETCODE=$? echo $RETCODE Thanks and Regards Ammu (2 Replies)
Discussion started by: ammu
2 Replies

6. HP-UX

Return codes of RDIST

Can any body please tell me the return codes of RDIST tool? I am using RDIST (through an UNIX script) to synchronize files between two servers say ukblx151(source) & ukapx050(target). RDIST raises an alert mail (through notify option) in case of success & also failure but there is a problem if... (0 Replies)
Discussion started by: vishal_ranjan
0 Replies

7. UNIX for Advanced & Expert Users

Return Codes

I have a simple script which renames a file.How do i capture the return code of the script if the script fails (3 Replies)
Discussion started by: kris01752
3 Replies

8. UNIX for Dummies Questions & Answers

Return codes

Hi, Can anyone tell me if there are return codes for SFTP? If so how would you capture them? I've tried 'man sftp' but its not particularly helpful. Many thanks Helen :confused: (4 Replies)
Discussion started by: Bab00shka
4 Replies

9. UNIX for Dummies Questions & Answers

unix return codes

Suppose I have a script which is monitoring a directory whenever a file drops in that directory,it sends alert say I want to write a return code for the above script which on successful execution of script gives a return value Based on return code , I want to do initiate some jobs in other... (1 Reply)
Discussion started by: abhib45
1 Replies

10. UNIX for Dummies Questions & Answers

Help with Return codes

I have the below script I am running on a Solaris system to check the status of a Tivoli Workload Scheduler job and return the status. We need this script to return a '0' if any of the jobs in the stream are in a "EXEC" state and an "1" if in a "HOLD" state. I am not a programmer so I am not sure... (1 Reply)
Discussion started by: leezer1204
1 Replies

Featured Tech Videos