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

标签 ruby argv

代码:

  #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

最佳答案

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

test_argv "*.*"

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

关于ruby - 如何将字符串 "*.*"作为命令行参数传递给 ruby​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268777/

相关文章:

C - argv 存储随机值而不是给定值

ruby-on-rails - rails 4密码确认ca

ruby-on-rails - 文章#index 中的 Ruby on Rails 教程 NoMethodError

c++ - 获取 boost 命令行来解析我提供的数组而不是来自 main 的 argv - 模拟 argv

c - 为什么在为存储要在程序中使用的 main 参数的指针变量赋值之前不分配空间?

c - 通过 argv 传递管道地址

Ruby - Digest::Digest 已弃用;使用摘要

ruby-on-rails - '<module:ActiveRecord>':未初始化常量 CarrierWave::Mount (NameError)

ruby - 在 Linux 中编写 Openoffice 脚本

c - 使用 argv 元素时出现问题