Создание сценария для замены содержимого небольшого файла в заполнителя в файл большего размера - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать скрипт, который будет вставлять многострочный текст из текстового файла в мой index.html.

Вот о чем я думаю.Создайте файл с именем testEnvConfig.json. Содержимое будет содержать настройки для моего тестового сервера Firebase.

var config = {
    apiKey: "AIzaSyALdWxUxt63AwOrj-waTNvZo7_zt8CuMgs",
    databaseURL: "https://bggoplantestdev.firebaseio.com",
    projectId: "bggoplantestdev",
    storageBucket: "bggoplantestdev.appspot.com",
    messagingSenderId: "499035393973"
};

У меня также есть очень большой HTML-файл с именем index.html, содержащий более 1000 строк кода.Однако есть одна переменная с именем $config

. Я просто хочу запустить скрипт ./configureEnv <env>, который будет принимать тестовый файл в качестве параметра и заменять переменную $ config содержимым тестового файла..

Таким образом, конечный результат таков:

* ДО * (в index.html)

try {
  var $config
  var fbapp = firebase.initializeApp(config);

ПОСЛЕ (в index.html)

try {
  var config = {
    apiKey: "AIzaSyALdWxUxt63AwOrj-waTNvZo7_zt8CuMgs",
    databaseURL: "https://bggoplantestdev.firebaseio.com",
    projectId: "bggoplantestdev",
    storageBucket: "bggoplantestdev.appspot.com",
    messagingSenderId: "499035393973"
  };
  var fbapp = firebase.initializeApp(config);

Любой совет, как это сделать?

1 Ответ

1 голос
/ 11 июня 2019

Считать содержимое файла в переменную.Затем используйте здесь документ для шаблона и замените переменную там, где вы хотите.

#!/bin/bash
filename=$1
config=$(< "$filename")
cat <<EOF >index.html
try {
  $config 
  // this $config variable would be substituted by the 
  // value of env in the script.
  var fbapp = firebase.initializeApp(config);
} catch {
  // do something
}
EOF

Параметром сценария является имя файла, содержащего конфигурацию.

ФактическиЯ предлагаю вам взять var config = из конфигурационных файлов и просто поместить структуру.Имя переменной должно быть просто в шаблоне.Тогда скрипт будет выглядеть так:

#!/bin/bash
filename=$1
config=$(< "$filename")
cat <<EOF > index.html
try {
  var config = $config;
  // this $config variable would be substituted by the 
  // value of env in the script.
  var fbapp = firebase.initializeApp(config);
} catch {
  // do something
}
EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...