8

コード:

  #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*.*"return somethingelse.TXT などは、ファイル操作を行っている場合に予想されることですが、私はそうではありません。

しかし、これは予想どおりに動作します。

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

私の質問は、"*.*"(etc) をコマンド ライン パラメータとして受け取るユーザー フレンドリーなスクリプトを作成するにはどうすればよいですか? さらに、これはどこに文書化/説明されていますか?

編集: これは Windows と Linux、1.8.7 と 1.9.2 で発生します。

4

1 に答える 1

6

これをリテラル引用符で囲む必要がある場合があります。

test_argv "*.*"

引用符は、コマンドライン引数が時期尚早に展開されるのを避ける必要があります。

于 2011-06-07T17:02:19.133 に答える