[#44310] プログラムに対して意図したとおりの文字列を渡す方法 — "Information Kanasansoft" <kanasansoft@...>

kanasanです。

9 messages 2007/12/05

[#44332] クラス:相互参照系の作成方法について質問です — "Saburoh Sakai" <sabroh@...>

はじめまして、さかいと申します。

12 messages 2007/12/11

[#44366] Rake改善プロジェクト — "Hajime Hoshi" <hajimehoshi@...>

東京大学修士 1 年の星一と申します。

14 messages 2007/12/19

[ruby-list:44310] プログラムに対して意図したとおりの文字列を渡す方法

From: "Information Kanasansoft" <kanasansoft@...>
Date: 2007-12-05 11:12:32 UTC
List: 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ドライブ直下一覧]

In This Thread

Prev Next