in reply to getting the bash exit code
Now I have no idea how it got 25856 from 101 (well it does seem to be 101 times that magical 256 number, but I'm sure it isn't that simple).
Yes, it's that simple. perlvar explains that $? is set like explained in system where the following snippet is copied from:
Quote from system:
HTHif ($? == -1) { print "failed to execute: $!\n"; } elsif ($? & 127) { printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; } else { printf "child exited with value %d\n", $? >> 8; }
Update:
Bit# 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 | | | | | | | | | | | | | | | | X7 X6 X5 X4 X3 X2 X1 X0 CD S6 S5 S4 S3 S2 S1 S0 | | | +-- exit code (8bit) | +-- signal code (7bit) | +-- core-dumped flag
Update2 (in response to node below):
So for quick and dirty every day use it sounds like I can just say something like: $exit_status = $?/255;No.
Use int() to get rid of potential fractional parts when the process terminated due to a signal or core-dump.my $exit_status = int( $? / 256 ); # quick and dirty exit-state # decimal arithmetic so to speak # (works for positive numbers)
So X >> Y is most of the time int( X / (2**Y) ) for positive numbers.
Here are some starters for binary arithmetic: wikibooks, Khan Academy - Binary Numbers, Slideshare - Binary Arithmetic, ... Search also MIT OpenCourseWare - I am sure, they have something in their repertoire.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: getting the bash exit code
by xorl (Deacon) on Aug 27, 2012 at 13:22 UTC |