9

実行

user@EWD-MacBook-Pro:~$ export property.name=property.value

私に与えます

-bash: export: `property.name=property.value': not a valid identifier

内部にドットを含むシステム プロパティを持つことは可能ですか? もしそうなら、それはどのようにしますか?

4

4 に答える 4

17

他の人が言ったように、bash では許可されていないため、お気に入りのスクリプト言語を使用する必要があります。たとえば、Perl では次のようになります。

perl -e '$ENV{"property.name"} = "property.value"; system "bash"'

これにより、環境変数が設定されたサブシェル bashproperty.nameが起動されますが、bash からその環境変数にアクセスすることはできません (ただし、プログラムはそれを見ることができます)。

編集:@MarkEdgarは、envコマンドも機能するとコメントしました:

 env 'property.name=property.value' bash # start a subshell, or
 env 'property.name=property.value' command arg1 arg2 ...   # Run your command

いつものように、シェルから特殊文字を保護する必要がある場合、またはプロパティ名または値にスペースを含めたい場合にのみ、引用符が必要です。

于 2013-02-22T03:55:19.340 に答える
4

私は今日の午後の大部分を、Jenkins によって設定されたプロパティにアクセスする方法を見つけようとしました (jenkins はドット付きのプロパティ形式を使用するジョブ パラメータを渡すため) - これは Adrian からの良いヒントでした。スクリプトも。どうしようか迷いましたが、次のことを試してみました。

var=`perl -e 'print $ENV{"property.name"};print "\n";'`

これは実際には非常にうまく機能しました。しかしもちろん、それはすでに環境に設定されたプロパティで開始されたシェルで機能します。つまり、Adrian の例では、彼が提供した perl の例で呼び出された bash インスタンスから開始されたスクリプトで機能します。この perl のスニペットが、彼の perl の例の直後にのみ同じシェルに配置された場合は、そうではありません。

少なくとも今日の午後、私は何かを学んだので、この時間がすべて無駄になるわけではありません.

于 2013-07-19T21:03:44.230 に答える
2

これらのプロパティをエクスポートしてアプリケーションを実行する場合、一部のプログラムではシステム プロパティの設定をオプションとしてサポート .し、プロパティ名で許可することができます。

Java の世界では、ほとんどのツールが-Dオプションによるシステム プロパティの設定をサポートしています。たとえば、このようにドットでシステム プロパティを設定できます-Dproperty.name=property.value

于 2014-08-06T03:20:53.793 に答える
1

Bash では、変数名に「_」と英数字のみを使用できます。「。」許可されていません。

http://tldp.org/LDP/abs/html/gotchas.html

于 2013-02-22T03:45:27.670 に答える