D
David Landrith
I've written several simple command line tools in ruby to display
standard reports. These are all placed in the PATH, so that they can
be executed like this:
jobstatus.rb -j1233
to show the status for job 1233 (I'm using the getoptlong library.)
The default output is in fixed width, ASCII character built tables
(e.g., | for vertical line, - for horizontal line, and + for corners).
I'd like to be able to automatically sense when the output is being
piped to somewhere else, so that I can automatically make the report
switch to a tab delimited format a la the mysql command line client.
This, for example, allows for much easier use of command line tools
such as cut, uniq, sort, etc.
I've tried trapping signal 13 (SIGPIPE) and this doesn't work. In
fact, I've tried trapping every signal from 0 to 64; 26 throws an
error, 0 executes on exit (of course), but none of them seem to
register for any kind of pipe; viz., '<', '>', and '|' all fail to pass
a signal to the ruby program.
Am I doing something wrong here, or am I going about this entirely the
wrong way?
Best,
Dave
-------------------------------------------------------
David King Landrith
(w) 617.227.4469x213
(h) 617.696.7133
One useless man is a disgrace, two
are called a law firm, and three or more
become a congress -- John Adams
standard reports. These are all placed in the PATH, so that they can
be executed like this:
jobstatus.rb -j1233
to show the status for job 1233 (I'm using the getoptlong library.)
The default output is in fixed width, ASCII character built tables
(e.g., | for vertical line, - for horizontal line, and + for corners).
I'd like to be able to automatically sense when the output is being
piped to somewhere else, so that I can automatically make the report
switch to a tab delimited format a la the mysql command line client.
This, for example, allows for much easier use of command line tools
such as cut, uniq, sort, etc.
I've tried trapping signal 13 (SIGPIPE) and this doesn't work. In
fact, I've tried trapping every signal from 0 to 64; 26 throws an
error, 0 executes on exit (of course), but none of them seem to
register for any kind of pipe; viz., '<', '>', and '|' all fail to pass
a signal to the ruby program.
Am I doing something wrong here, or am I going about this entirely the
wrong way?
Best,
Dave
-------------------------------------------------------
David King Landrith
(w) 617.227.4469x213
(h) 617.696.7133
One useless man is a disgrace, two
are called a law firm, and three or more
become a congress -- John Adams