我试图通过Ruby运行一系列命令,并捕获stdin
,stdout
,和exitstatus。在同一个shell进程中运行多个命令
require "open3"
require "pp"
command_list = [
"export MY_ENV_VAR=foobar",
"printenv MY_ENV_VAR"
]
executed_commands = []
result = nil
command_list.each do |command|
stdout, stderr, status = Open3.capture3(command)
result = status.exitstatus
executed_commands << [command, stdout, stderr, result]
break if result != 0
end
pp executed_commands
puts "exited with #{result} exit status."
该过程退出具有非零状态,表明该命令printenv MY_ENV_VAR
失败,并且这些命令不被在同一进程中运行。
如何可以在一个单一的外壳进程执行的一系列命令,记录stdin
,stdout
,stderr
和每个命令的退出状态?
我将如何创建一个父shell进程,然后在该shell中执行一系列命令? – Richard
你可以试着把多个命令放在一个字符串中,并用'&&'或';'分隔它们。我建议前者,因为只要出现错误就会停止。 –