这是我一直好奇的事情。在 Ruby 中执行 bash 命令时(例如 w/ ` 用法),它是否在完成时返回 true 布尔值,如果失败则返回 false ?非常感谢任何帮助!
问问题
633 次
4 回答
3
如果您使用system()
执行命令,您将获得false
或nil
失败(取决于失败的原因),以及true
成功。
但是,如果您使用Backticks
,则结果将是被脱壳的程序写入的任何内容STDOUT
。
http://rubyquicktips.com/post/5862861056/execute-shell-commands
于 2013-11-13T12:56:21.687 回答
0
一般来说,有四种方法可以在 Ruby 中执行命令并区别对待 STDIN、STDOUT 和 STDERR。
# Kernel#system
# returns true (zero exit status), false (non zero exit status) or nil (command execution fails)
# Kernel#` (backticks)
# returns the STDOUT
# outputs the STDERR, but not capture it
# The built-in syntax %x{...} uses this method
# IO#popen
# the STDIN and STDOUT will be connected to the returned IO object
# Open3#popen3
# STDIN, STDOUT and STDERR are all captured to IO objects
而且您仍然可以在原始命令中单独处理 STDERR,例如:
system("[command_which_fails]") #=> STDERR & false
system("[command_which_fails] > /dev/null 2>&1") #=> false
于 2013-11-13T13:15:20.710 回答
0
反引号 ` ` 不会返回 true 或 false 但这并不意味着您无法检查命令是否成功执行。你总是可以使用 $? 它会返回错误代码。如果最后一个命令成功运行,它应该是 0。
您可以使用系统('')。它根据命令的结果返回真或假。
您可以使用多种方式在 ruby 中执行命令。他们中的大多数在下面的文章中进行了解释。
于 2014-10-14T16:49:09.913 回答
-2
它应该nil
在失败和true
成功时返回。
于 2013-11-13T12:53:53.320 回答