如何忽略参数化Ruby系统调用的输出

卡夫蒂魔鬼

我找到了一些代码,可以通过系统调用从Ruby运行Applescript:

system 'osascript', *script.split(/\n/).map { |line| ['-e', line] }.flatten

它的效果很好,但这并不是我真正需要的。

我想修改系统调用,以便忽略标准输出。

我先添加1>/dev/null参数:

system 'osascript', *script.split(/\n/).map { |line| ['-e', line] }.flatten, "1>/dev/null"

这没有用,因为第三个参数似乎被忽略了。

然后,我删除了参数化调用并使用了字符串插值:

system "osascript #{*script.split(/\n/).map { |line| ['-e', line] }.flatten} 1>/dev/null"

产生语法错误。

然后,我尝试了各种尝试来移动内容,这主要产生了其他语法错误。

在这种情况下忽略系统输出的正确语法是什么?

亩太短

如果从切换到Kernel#system这会更容易Open3Open3中的方法使您可以方便地控制stdin,stdout和stderr,而不必弄乱它们,甚至可以osascript通过stdin来输入脚本,而不必将其拆分和使用多个-e开关。

大概是这样的:

out, error, status = Open3.capture3('osascript', stdin_data: script)

如果要忽略stdout和stderr,请使用占位符变量:

_, _, status = Open3.capture3('osascript', stdin_data: script)
*_, status = Open3.capture3('osascript', stdin_data: script)

如果您不关心stdout,stderr或状态,请执行以下操作:

Open3.capture3('osascript', stdin_data: script)

但是您的良心应该告诉您至少检查一下状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调用系统命令并捕获其输出?

来自分类Dev

带有可变数量参数的 Ruby 调用系统或 exec

来自分类Dev

系统Verilog参数化接口,如何

来自分类Dev

系统Verilog参数化接口,如何

来自分类Dev

Ruby系统参数

来自分类Dev

如何获得C / C ++中Linux系统调用的输出?

来自分类常见问题

如何在Rust中调用系统命令并捕获其输出?

来自分类Dev

如何获得C / C ++中Linux系统调用的输出?

来自分类Dev

Groovy:如何格式化输出以忽略包括“[]”的行?

来自分类Dev

如何测试忽略NSubstitute中的params参数的调用?

来自分类Dev

忽略C中的输出参数

来自分类Dev

如何在bash上与系统调用共享参数?

来自分类Dev

Ruby:打印系统实时输出?

来自分类Dev

在Ruby中抑制系统调用上的顽固控制台输出

来自分类Dev

如何调用参数并从Google云托管函数返回输出?

来自分类Dev

如何使用输入和输出参数调用功能

来自分类Dev

破折号:如何捕获陷阱的输出(不带参数调用)?

来自分类Dev

write()系统调用将忽略文件权限

来自分类Dev

如何验证使用特定参数一次调用方法,而忽略其他争论的调用?

来自分类Dev

如何从ruby的ajax调用中将参数作为json传递?

来自分类Dev

如何从Jquery到Ruby使用参数调用函数

来自分类Dev

在String对象上调用参数方法时,为什么Ruby输出[[:rest]]?

来自分类Dev

如何忽略knitr的输出中的'

来自分类Dev

如何忽略knitr的输出中的'

来自分类Dev

系统调用如何工作

来自分类Dev

系统调用如何执行

来自分类Dev

execlp()系统调用输出错误

来自分类Dev

Strace输出未显示系统调用

来自分类Dev

如何使用输入参数调用存储过程并使用输出参数填充文本框?

Related 相关文章

热门标签

归档