相关疑难解决方法(0)

Ruby,exec,system和%x()或Backticks之间的区别

以下Ruby方法有什么区别?

exec,system%x()反引号

我知道它们用于通过Ruby以编程方式执行终端命令,但我想知道为什么有三种不同的方法来执行此操作.

ruby exec

358
推荐指数
3
解决办法
15万
查看次数

在Ruby中获取system()调用的输出

如果我在Ruby中使用Kernel#system调用命令,我该如何获得它的输出?

system("ls")
Run Code Online (Sandbox Code Playgroud)

ruby system call

303
推荐指数
13
解决办法
25万
查看次数

使用%x捕获命令行错误

只要您想在命令行上执行某些操作,就可以使用以下语法:

%x(command to run)
Run Code Online (Sandbox Code Playgroud)

但是,我想捕获错误或至少得到响应,以便我可以正确解析它.我尝试过设置:

result = %x(command to run)
Run Code Online (Sandbox Code Playgroud)

并使用try-catch

begin
  %x(command to run)
rescue
  "didn't work"
end
Run Code Online (Sandbox Code Playgroud)

无济于事.如何捕获结果而不是打印出来?

ruby command-line

12
推荐指数
4
解决办法
9344
查看次数

提高shell命令失败的异常?

我正在用Ruby编写一些脚本,我需要通过shell命令与一些非Ruby代码进行交互.我知道从Ruby执行shell命令至少有6种不同的方法,遗憾的是,当shell命令失败时,这些方法似乎都没有停止执行.

基本上,我正在寻找相当于以下内容的东西:

set -o errexit
Run Code Online (Sandbox Code Playgroud)

...在Bash脚本中.理想情况下,解决方案会在命令失败时(即通过检查非零返回值)引发异常,可能使用stderr作为消息.这不会太难写,但似乎这应该存在.我有没有找到一个选项?

ruby shell exception

7
推荐指数
4
解决办法
7256
查看次数

外部命令如何将其输出和退出状态返回给Ruby?

这是关于ruby系统命令检查退出代码的后续问题.我想运行命令,以获取其输出以及退出代码.目前我在代码中使用的是:

rv = `#{cmd} 2>&1`
Run Code Online (Sandbox Code Playgroud)

但这只能捕获输出,并且

rv = system(cmd)
Run Code Online (Sandbox Code Playgroud)

仅捕获退出代码.如何实现两者?

ruby shell stdout exit-code

7
推荐指数
1
解决办法
3742
查看次数

标签 统计

ruby ×5

shell ×2

call ×1

command-line ×1

exception ×1

exec ×1

exit-code ×1

stdout ×1

system ×1