Я запускаю команду, используя sh, и мне нужно прочитать вывод этой команды. например,
sh "whoami"
Но кажется, что sh возвращает true, а не строку, содержащую выходные данные команды whoami. Кто-нибудь знает решение?
Есть несколько способов:
output = `whoami` #or output = %x[whoami] # or using 'system' but in case of errors it's gonna return false output = system "whoami"
Просто используйте обратные кавычки для выполнения оператора:
output = `whoami`
Результат будет в переменной 'output'.
Я не был уверен, как заставить другие методы завершиться с ошибкой, поэтому я пошел с перенаправлением:
sh "mysql --verbose #{connection_options} < #{sql_file} > #{sql_file_output_file}" do |ok, status| ok or fail "mysql file failed [#{sql_file}" end