如何传递字符串“*.*”将 ruby​​ 作为命令行参数?

发布于 2024-11-13 23:49:20 字数 721 浏览 5 评论 0原文

code:

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

如果我在调用上述代码时提供字符串 "*.*" (带或不带引号),我会得到以下输出:

  C:\test>test_argv *.*
  length: 5
  Argument: afile.TXT
  Argument: bfile.TXT
  Argument: cfile.TXT
  Argument: dfile.TXT
  Argument: somethingelse.TXT

即 c:\test 中的文件列表。

其他值,例如 "s*.*" 返回 Somethingelse.TXT,正如您在执行文件操作时所期望的那样 - 但我没有。

但这的行为正如预期的那样:

  C:\test>test_argv asdf
  length: 1
  Argument: asdf

所以我的问题是,如何制作一个用户友好的脚本,将 "*.*" (等)作为命令行参数?此外,这在哪里记录/解释?

编辑:这发生在 Windows 和 Linux、1.8.7 和 1.9.2 上

code:

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

If I supply the string "*.*" (with or without quotes) when I call the above, I get the following output:

  C:\test>test_argv *.*
  length: 5
  Argument: afile.TXT
  Argument: bfile.TXT
  Argument: cfile.TXT
  Argument: dfile.TXT
  Argument: somethingelse.TXT

i.e., a listing of the files in c:\test.

Other values, like "s*.*" returns somethingelse.TXT, as you'd expect if you were doing file operations -- but I'm not.

But this behaves as would have expected:

  C:\test>test_argv asdf
  length: 1
  Argument: asdf

So my question is, how can I make a user-friendly script that will take "*.*" (etc) as a command line parameter? In addition, where is this documented/explained?

Edit: this happens on windows and linux, 1.8.7 and 1.9.2

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

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

发布评论

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

评论(1

你爱我像她 2024-11-20 23:49:20

您可能需要将其放入文字引号中:

test_argv "*.*"

引号应避免过早地扩展命令行参数。

You may need to put this into literal quotes:

test_argv "*.*"

The quotes should avoid having the command-line arguments get expanded on you prematurely.

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