I know shell commands have beaten to death on this list, but searching
the archives I couldn’t quite find what I was looking for.
I want a way to capture the output of the shell command, and the
success or failure of it.
Of course I’ve used system("") and %x, and I have been successful in
getting the return code using @?, although something about it rubs me
the wrong way. Not the least of which is that standard error isn’t
captured by anything.
In the case of what I’m doing now, I’d like to shell out to tar, have
an error returned to me if tar doesn’t complete successfully, AND have
the output of tar for parsing.
Not quite sure if I understood you right, but you could probably do
something like this:
res = command # note: ` not ’
This executes ‘command’ and stores the output in res.
Ståle,
The problem with that is that it doesn’t indicate whether the
command succeeded or failed.
By the way, %x{ls /tmp} is identical to `ls /tmp`, it's just
In the case of what I’m doing now, I’d like to shell out to tar, have
an error returned to me if tar doesn’t complete successfully, AND have
the output of tar for parsing.
The return value of the program is stored in $? as far as I can see. I
tested it on my laptop, and $? was set to 0 when the command succeeded
and 1 when it didn’t. (Of course, the return value depends on the
program, but non-zero is generally considered failure.)
Right, but standard error goes into lala land.
I was hoping for something a bit cleaner than executing with %x then
checking the $? value.
By the way, %x{ls /tmp} is identical to `ls /tmp`, it's just
easier to read
–Kyle
The return value of the program is stored in $? as far as I can see. I
tested it on my laptop, and $? was set to 0 when the command succeeded
and 1 when it didn’t. (Of course, the return value depends on the
program, but non-zero is generally considered failure.)
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.