2007年12月 5日

[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ドライブ直下一覧]

投稿者 xml-rpc : 2007年12月 5日 20:12
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67268
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。