2017-10-05 7 views
1

シェフを使用して名前にドル文字列を持つサービスを開始しようとしていますが、できません。スティングは変数の中にあり、ドル記号を逃れる方法はわかりません(単なる文字列だったら私はそうでしょう)ドル記号のためシェフでサービスを開始できません

私は逐語的な文字列と補間に関する情報を見ましたが、私はそれを理解することができません

code <<-EOH 
sc config #{node.recipe_name.serviceName} depend= OtherService 
EOH 

とサービス名は、に失敗し、シェフからレシピを呼び出すとき

どういうわけか$ ABC部分が常に消えApplication.Instance $ ABCのようになります。アウト

ブロックは次のようになりますサービスを開始します。

+1

あなたはバックスラッシュとドル記号をエスケープしてみてくださいましたか? – JFA

+0

https://stackoverflow.com/questions/32841165/using-the-character-in-ruby-block-in-chef – JFA

+0

問題は、文字列を作成しないことです。情報を取得する変数にありますcmdの結果、私は変数の内容をエスケープする方法を知らない –

答えて

2

はあなたの文字列をエスケープするShellwords.shellescape(またはそのエイリアス、Shellwords.escape)を使用してみてください:

code <<-EOH 
sc config #{Shellwords.escape(node['recipe_name']['serviceName'])} depend= OtherService 
EOH 
関連する問題