我正在使用sh运行命令,需要读取该命令的输出。 e.g。
sh“whoami”
但是sh似乎只返回true,而不是包含whoami命令输出的字符串。有谁知道解决方案?
答案 0 :(得分:15)
有几种方法:
output = `whoami`
#or
output = %x[whoami]
# or using 'system' but in case of errors it's gonna return false
output = system "whoami"
答案 1 :(得分:6)
只需使用反引号来执行语句:
output = `whoami`
结果将在'output'变量中。
答案 2 :(得分:1)
我不知道如何让其他方法在出错时失败,所以我选择了重定向:
sh "mysql --verbose #{connection_options} < #{sql_file} > #{sql_file_output_file}" do |ok, status|
ok or fail "mysql file failed [#{sql_file}"
end