将命令行参数传递给 Ruby 脚本并从命令行读取时出现问题

发布于 2024-12-23 13:08:31 字数 438 浏览 0 评论 0原文

我已将问题范围缩小到以下简单的代码片段:

#!/usr/bin/env ruby

print "Enter your name: "
name = gets.chomp
puts "Hello #{name}"

当从 OS X 终端调用时,效果很好,如 ruby a.rb。但是,传递像 ruby a.rb 123 这样的命令行参数会导致此错误:

a.rb:4:in `gets': No such file or directory - 123 (Errno::ENOENT)
    from a.rb:4

我的目标是将命令行参数传递给脚本从键盘读取输入。

什么原因导致上述错误?

I've narrowed the problem down to the following simple code snippet:

#!/usr/bin/env ruby

print "Enter your name: "
name = gets.chomp
puts "Hello #{name}"

This works fine when called from the OS X Terminal like this ruby a.rb. However passing a command line argument like this ruby a.rb 123 causes this error:

a.rb:4:in `gets': No such file or directory - 123 (Errno::ENOENT)
    from a.rb:4

My goal is to pass command line arguments to a script and read input from the keyboard.

What is causing the above error?

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

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

发布评论

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

评论(1

我爱人 2024-12-30 13:08:31

在这里找到答案:Ruby 中的同一程序如何接受用户的输入以及命令行参数

在使用 gets 之前必须执行 ARGV.clear

Found the answer here: How can same program in ruby accept input from user as well as command line arguments

Just had to do ARGV.clear before using gets.

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