変数を使用して設定ファイルにテキストを出力し、単一のブーストラインを使用してシェルスクリプトに含めようとしています。
これまでに必要な行間隔などでファイルを生成するための以下のコードがありますが、変数を渡す方法がわかりません。
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コマンドの後に ">>"の代わりに ">"を使用する必要があります。
答え2
私が正しく理解した場合は、次のことを試すことができます。
dbname=db
usrname=user
pssword=pass
sudo cat << EOL >> /etc/grafana/provisioning/datasources/InfluxDB.yaml
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 /etc/grafana/provisioning/datasources/InfluxDB.yaml
apiVersion: 1
datasources:
- name: db
type: influxdb
url: http://localhost:8086
user: user
password: pass
database: db
access: proxy
editable: true
isDefault: true