From: Information Kanasansoft Date: 2007-12-05T20:12:32+09:00 Subject: [ruby-list:44310] プログラムに対して意図したとおりの文字列を渡す方法 kanasanです。 コマンドライン引数を用いて プログラムに文字列を渡す方法で質問があります。 ARGV($*)を一覧表示するプログラムを作成しました。 「*」を指定した場合、 current directoryのlistが表示されてしまうため、 シングルクォートで括り対応しました。 (半角スペースを渡すために はじめはダブルクォートで対応していましたが、 「*」を入力するとcurrent directoryのlistが 表示されてしまうため、 シングルクォートに変更しました。) シングルクォートをescapeする必要があるため、 下記のように色々試しましたがうまくいきません。 ネットも大分探しましたが、見つかりませんでした。 プログラムに対して意図したとおりの文字列を渡すには どのようにすればいいのでしょうか。 どなたかご存知の方ご教授頂けないでしょうか。 ■環境 ・実行環境:Windows2003Server ・開発環境:XPPro+ActiveScriptRuby ■背景 ・現在、ASP(.NETではないVBScript)でSOAPを使用したい ・実行環境にはMicrosoft SOAP Toolkitや.NET Framework、  Rubyのruntimeはインストールできない ・開発環境で「SOAP::RPC::Driver」を用いたSOAPClientを作成 ・ExerbでEXE化(Exerbに必要なdllは環境変数のPathで対応) ・Server.CreateObjectで  Shellを直接起動しEXE化したSOAPClientを実行 ■CODE #test.rb def o(*args) args.each{|arg| puts arg } end o(*($*)) ■結果 >ruby --version ruby 1.8.6 (2007-06-07 patchlevel 36) [i386-mswin32] >ruby test.rb a a >ruby test.rb / / >ruby test.rb * [カレントディレクトリ一覧] >ruby test.rb "*" [カレントディレクトリ一覧] >ruby test.rb '*' * >ruby test.rb '*' * >ruby test.rb ''*' [カレントディレクトリ一覧] >ruby test.rb '?'*' [カレントディレクトリ一覧] >ruby test.rb '$'*' $* >ruby test.rb '/'*' [Cドライブ直下一覧] >ruby test.rb '\'*' [Cドライブ直下一覧]