변수를 사용하여 구성 파일에 텍스트를 출력하고 단일 부스트 라인을 사용하여 쉘 스크립트에 포함시키려고 합니다.
지금까지 필요한 줄 간격 등으로 파일을 생성하는 아래 코드가 있지만 변수를 전달하는 방법을 모르겠습니다.
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
올바른 방법 중 하나는 다음과 같습니다.
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