実行
user@EWD-MacBook-Pro:~$ export property.name=property.value
私に与えます
-bash: export: `property.name=property.value': not a valid identifier
内部にドットを含むシステム プロパティを持つことは可能ですか? もしそうなら、それはどのようにしますか?
他の人が言ったように、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
いつものように、シェルから特殊文字を保護する必要がある場合、またはプロパティ名または値にスペースを含めたい場合にのみ、引用符が必要です。
私は今日の午後の大部分を、Jenkins によって設定されたプロパティにアクセスする方法を見つけようとしました (jenkins はドット付きのプロパティ形式を使用するジョブ パラメータを渡すため) - これは Adrian からの良いヒントでした。スクリプトも。どうしようか迷いましたが、次のことを試してみました。
var=`perl -e 'print $ENV{"property.name"};print "\n";'`
これは実際には非常にうまく機能しました。しかしもちろん、それはすでに環境に設定されたプロパティで開始されたシェルで機能します。つまり、Adrian の例では、彼が提供した perl の例で呼び出された bash インスタンスから開始されたスクリプトで機能します。この perl のスニペットが、彼の perl の例の直後にのみ同じシェルに配置された場合は、そうではありません。
少なくとも今日の午後、私は何かを学んだので、この時間がすべて無駄になるわけではありません.
これらのプロパティをエクスポートしてアプリケーションを実行する場合、一部のプログラムではシステム プロパティの設定をオプションとしてサポート .
し、プロパティ名で許可することができます。
Java の世界では、ほとんどのツールが-D
オプションによるシステム プロパティの設定をサポートしています。たとえば、このようにドットでシステム プロパティを設定できます-Dproperty.name=property.value
。
Bash では、変数名に「_」と英数字のみを使用できます。「。」許可されていません。