From: "U.Nakamura" Date: 2007-12-06T00:54:21+09:00 Subject: [ruby-list:44316] Re: プログラムに対して意図したとおりの文字列を渡す方法 こんにちは、なかむら(う)です。 In message "[ruby-list:44314] Re: プログラムに対して意図したとおりの文字列を渡す方法" on Dec.06,2007 00:18:44, wrote: | test.rbに渡すコマンド引数のescapeのルールが知りたいのです。 | | 例えば、csvであれば、 | ・値に「,」「"」及び改行があれば「"」で括る | ・「"」は「""」のようにescapeする | JSONであれば | ・文字列は「"」で括るが、文字列中に「"」があれば「/"」とescapeする |  (制御文字についての説明は省略) | のように、明確なルールがあります。 | | Rubyのコマンドライン引数に文字列を指定する場合の | 約束事がわからないため、 | escapeしようとしてもできずに困っています。 (1) ワイルドカードの展開を抑制する場合は「'」でくくる (2) 空白文字は「"」または「'」でくくる (3) 「"」は「'」または「"」でくくる (つまり「'"'」または「"""」) (4) 「'」は「"」でくくる (つまり「"'"」) (5) シェルがcmd.exeの場合、「<」「>」「|」「&」「^」などの特 殊文字は「"」でくくる。これはcmd.exeのルールですので、詳 しくはWindowsのヘルプにあたってください。 というわけで、例えば、「a " b '*c」という文字列を渡したい場合 は、「a' ''"'' 'b' '"'"'*'c」とすればいいことになります(もち ろんもっと短く書けますが)。 それでは。 -- U.Nakamura