使用封装在 shell 脚本中的 ruby​​ popen

发布于 2024-08-07 12:12:16 字数 356 浏览 5 评论 0原文

我完成了作业的短文件,该作业使用 IO.popen("command").readlines 来获取该命令的 STDOUT。但是,我需要编写一个 shell 脚本来包装我的 ruby​​ 文件。没问题,但不知何故将其放入 shell 脚本中会使 readlines 挂起。

ruby script.rb foo example > example.out

这有效

script.sh foo example >example.out

,它挂在读取行上。 ruby script.rb 是 script.sh 包含的全部内容。

I finished my short file for a homework assignment which uses IO.popen("command").readlines to grab the STDOUT of that command. However, I need to write a shell script to wrap my ruby file in. No problem, but somehow putting it in the shell script makes readlines hang.

ruby script.rb foo example > example.out

this works

script.sh foo example >example.out

this hangs on readlines. ruby script.rb is all that script.sh contains.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

咆哮 2024-08-14 12:12:17

看起来您忘记将参数传递给 ruby​​ 命令。您也可能无法指定解释器

script.sh

#!/bin/sh
ruby script.rb "$@"

或者,您可以将 #!/usr/bin/ruby 添加到 script.rb 的顶部并使其可执行(chmod +x脚本.rb)。这不是 shell 脚本。但它通常是用解释性语言执行脚本的首选方式。

完成后,您可以使用

./script.rb运行它

Looks like you forgot to pass your arguments to the ruby command. You may also be failing to specify an interpreter

script.sh

#!/bin/sh
ruby script.rb "$@"

Alternatively you could just add #!/usr/bin/ruby to the top of script.rb and make it executable (chmod +x script.rb). It's not a shell script. But it's generally the preferred way of executing a script in an interpretive language.

Once that's done you can run it with

./script.rb

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文