Ruby 的 ARGV 在 Windows 上可以为空,具体取决于运行脚本的方式

标签 ruby argv

我的演示.rb:

puts ARGV.size

ARGV.each do |a|
  puts "Argument: #{a}"
end

结果取决于我们如何运行脚本:

> demo.rb foo bar
0

> ruby demo.rb foo bar
2
Argument: foo
Argument: bar

为什么会这样?可以用这个做点什么吗?

编辑: 感谢所有回复!这是我的设置:

>assoc .rb
.rb=rbFile

>ftype rbFile
rbFile="c:\ruby-1.8.6\bin\ruby.exe" "%1" %*

所以看起来是对的。

但是我发现了

>demo.rb foo bar

使用这样的命令行启动进程:

"C:\ruby-1.8.7\bin\ruby.exe" "c:\demo.rb"

注意,.rb 与 1.8.6 关联,但 1.8.7 已启动。

所以我猜还有其他事情搞砸了?

最佳答案

打开命令窗口:

assoc .rb

是 rbFile 吗?

ftype rbFile

确保 Ruby.exe 后跟“%1”%*

%* 有时会丢失。

关于Ruby 的 ARGV 在 Windows 上可以为空,具体取决于运行脚本的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426412/

相关文章:

ruby - Traits vs. Interfaces vs. Mixins?

ruby - 在 Ruby 中生成质数 (Codewars kata : Primes in numbers)

ruby - 只允许 Ruby 数组中的特定值之一

c - 在单个 printf 调用中打印来自 argv 字符串的 ascii 值

c - 在 c 中打印形状 x 次

Ruby redmine svn 提交后 Hook 非常慢

mysql - 使用 :has_many associations and multiple conditions 查找

Python - 如果 sys.argv 包含 "&"字符,则不会打开第二个子进程

C:通过指针访问第二个 argv

将 argv 转换为静态字符串,或 Visual C++ 2010 中的错误