2017-04-19 6 views
0

私はawsのクラウ​​ド形成に取り組んでおり、discovery.zen.ping.unicast.hosts:[127.0.0.1]を使ってsedとjsonを置き換えようとしていますが、 $ SPARK_MASTER_IP $ Worker1に格納されている値。cloudformation - json-sedが環境変数で動作しない

discovery.zen.ping.unicast.hosts: [127.0.0.1] 
discovery.zen.ping.unicast.hosts: ["10.100.53.195 ","10.100.52.124 "] 

echo $Worker1 
10.100.53.185 

echo $SPARK_MASTER_IP 
10.100.53.218 

"su - root -c 'sed -i -e \"s/discovery.zen.ping.unicast.hosts: \\[127\\.0\\.0\\.1\\]/discovery.zen.ping.unicast.hosts: \\[\\\"$SPARK_MASTER_IP\\\",\\\"$Worker1\\\"\\]/g\" /etc/elasticsearch/elasticsearch.yml'\n", 

が、上記のコマンドの出力は

​​

PLSのは、これは動作するはずですが、

答えて

0

は、私は、あなたがすべてのエスケープをやっているかわからないんだけど助けている:

sed -i 's/discovery.zen.ping.unicast.hosts: \[127\.0\.0\.1\]/discovery.zen.ping.unicast.hosts: \['\"$SPARK_MASTER_IP\"','\"$Worker1\"'\]/g' 

複数行

sed -i 's/discovery.zen.ping.unicast.hosts: '\ 
'\[127\.0\.0\.1\]/discovery.zen.ping.unicast.hosts: '\ 
'\['\"$SPARK_MASTER_IP\"','\"$Worker1\"'\]/g' 

結果:コマンドの最後に追加何もないので、

discovery.zen.ping.unicast.hosts: ["10.100.53.185","10.100.53.218"] 

* -eオプションが必要とするべきではありません。

+0

私はこのようなコマンドを実行するとcloudformとその作業に取り組んでいますが、awsクラウドフォーメーションテンプレートにコマンドを追加すると動作しません。エラーもありません – niri

+0

あなたはおそらく 'su - root -c "$(...)" '' sed'コマンドは '... 'が括弧の中にあるところにあります。また、 'env'変数(表示されていない変数)をエクスポートまたはソースする必要があるかもしれません... –

関連する問題