変数を使用して設定ファイルにテキストを出力し、単一のブーストラインを使用してシェルスクリプトに含めようとしています。
これまでに必要な行間隔などでファイルを生成するための以下のコードがありますが、変数を渡す方法がわかりません。
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コマンドの後に ">>"の代わりに ">"を使用する必要があります。