这是我一段时间以来一直很好奇的事情。当在Ruby中执行bash命令时(例如w /`usage),它在完成时返回一个真值布尔值,如果失败则返回false吗?非常感谢任何帮助!
答案 0 :(得分:3)
如果您使用system()
执行命令,则失败时会false
或nil
(取决于失败的原因),成功时会true
。
但是,如果您使用Backticks
,结果将是被外围程序写入STDOUT
的任何内容。
http://rubyquicktips.com/post/5862861056/execute-shell-commands
答案 1 :(得分: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
答案 2 :(得分:0)
反引号``不会返回true或false,但这并不意味着你无法检查命令的成功执行。你可以随时使用$?它会返回错误代码。如果最后一个命令成功运行,则它应为0。
您可以使用系统('')。它会返回true或false,具体取决于命令的结果。
您可以使用多种方式在ruby中执行命令。其中大多数都在下面的文章中解释。
答案 3 :(得分:-2)
失败后应返回nil
,成功时返回true
。