変数を含む複数行をファイルに書き込む

変数を含む複数行をファイルに書き込む

変数を使用して設定ファイルにテキストを出力し、単一のブーストラインを使用してシェルスクリプトに含めようとしています。

これまでに必要な行間隔などでファイルを生成するための以下のコードがありますが、変数を渡す方法がわかりません。

sudo sh -c 'echo  /etc/grafana/provisioning/datasources/InfluxDB.yaml << EOL
 apiVersion: 1
 datasources:
  - name: $dbname
    type: influxdb
    url: http://localhost:8086
    user: $usrname
    password: $pssword
    database: $dbname
    access: proxy
    editable: true
    isDefault: true
EOL'

また、「、」または「」のさまざまな組み合わせを試してみましたが、正しく使用できないようです。上記のように、何も取得できないか、変数がテキストとして記録されます。

sudo sh -c 'echo "apiVersion: 1\n datasources:\n  - name: $dbname\n    type: influxdb\n    url: http://localhost:8086\n    user: $usrname\n    password: $pssword\n    database: $dbname\n    access: proxy\n    editable: true\n    isDefault: true" > /etc/grafana/provisioning/datasources/InfluxDB.yaml'

私はどこで間違っていますか?

ベストアンサー1

正しい方法の1つは次のとおりです。

sudo sh -c "cat >> /etc/grafana/provisioning/datasources/InfluxDB.yaml << 'EOL'
 apiVersion: 1
 datasources:
  - name: $dbname
    type: influxdb
    url: http://localhost:8086
    user: $usrname
    password: $pssword
    database: $dbname
    access: proxy
    editable: true
    isDefault: true
EOL"

ファイルを上書きするには、catコマンドの後に ">>"の代わりに ">"を使用する必要があります。

おすすめ記事