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?
Backticks (``) call a system program and return its output. As opposed to the first approach, the command is not provided through a string, but by putting it inside a backticks pair.
Create configurations for script files and select Shell Script. Under Execute, select the Script file option. Specify the path to the script file and options that you want to pass to the script when it is launched.
The Ruby system method is the simplest way to run an external command. It looks like this: system("ls") Notice that system will print the command output as it happens. Also system will make your Ruby program wait until the command is done.
Check $?.exitstatus
for the exit code.
For more info, see http://www.ruby-doc.org/core-2.1.0/Process/Status.html
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With