6

コマンドラインが次のようになることを期待するC++コードがいくつかあります。

/path/to/exe -p:parameterName="[/path/to/a/file,/path/to/another/file]"

引用符を含みます。それらは一重引用符または二重引用符にすることができますが、そこにある必要があります。Eclipse でコマンド ライン引数 (デバッグ構成/引数) を設定し、上記のコマンド ライン オプション (/path/to/exe を除く) を入力すると、Eclipse は引用符を食べます。私はこれを Linux で実行しているので、角かっこはシェルに苦痛を与え、私のコードに入ることさえありません。

コマンドライン引数を次のように設定した場合:

「これは引用されています」

argv[1] は次のようになります。

これは引用されています

つまり、引用符なしです。コマンドラインを次のように設定した場合:

「これは引用されています」

私は得る:

argv[1]: "this
argv[2]: is
argv[3]: quoted"

角括弧を入れようとすると、エスケープしようとしても、シェルに悲しみを与えることに戻ります。

\"\[this is quoted\]\"

コマンド ライン引数を入力したとおりに受け取るように Eclipse に指示するにはどうすればよいですか?

ありがとう

4

3 に答える 3

2

私は解決策を見つけたと思います- 少なくともこれは数回連続して機能しています。Eclipse の [引数] タブで、[プログラム引数] フィールドに次のようにコマンド ライン パラメータを入力します。

-p:parameterName="'[foo,bar]'"

これは次のようになります。

-p:parameterName='[foo,bar]'

gdb の「set args」コマンドで。角かっこ式を一重引用符で囲んでしまいますが、それは私のアプリケーションでは問題ありません。なぜこれが機能するのか (できればよかったのですが)、テキストをエスケープする他の方法が失敗した理由はわかりません。

二重引用符と一重引用符の順序が重要です。外側に一重引用符を付けようとすると、次のようになります

set args -p:parameterName=\"[foo,bar]\"

これは失敗します。二重引用符が必要な場合にどうするかわかりません。

于 2012-11-28T17:00:39.003 に答える
0

Did you already try

"\"\[this is quoted\]\""

?

BTW: It's not an eclipse issue but just reflects the behavior of the shell.

于 2012-11-27T22:51:32.097 に答える