Domanda

This is a follow up question regarding ruby system command check exit code. I want to run command such that to get its output as well as exit code. Currently what I used in the code is:

rv = `#{cmd} 2>&1`

But this only captures output, and

rv = system(cmd)

only captures the exit code. How to achieve both?

È stato utile?

Soluzione

Check $?.exitstatus for the exit code.

For more info, see http://www.ruby-doc.org/core-2.1.0/Process/Status.html

Altri suggerimenti

Backticks will capture the output from your command. For example, to store the output in the rv variable:

rv = `echo Error: EX_USAGE; exit 64`
#=> "Error: EX_USAGE\n"

You can interrogate the exit status of the process from the built-in $? variable or from a Process::Status object. For example, to get the exit status of the last backtick command:

$?.exitstatus
#=> 64

$? accesses the status of the last system executed command if you use the backticks, system() or %{}. You can then access the exitstatus and pid properties.

Source

So you can do rv = system(cmd), and do status = $?.exitstatus.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top