2007年12月 6日

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

こんにちは、なかむら(う)です。

In message "[ruby-list:44314] Re: プログラムに対して意図したとおりの文字列を渡す方法"
on Dec.06,2007 00:18:44, <kanasansoft@xxxxx> 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 <usa@xxxxx>

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




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