用bash替换环境变量

时间:2018-08-18 06:10:05

标签: bash shell

export const environment = {
  production: true,
  firebase: {
    apiKey: "APIKEY",
    authDomain: "AUTHDOMAIN",
    databaseURL: "DATABASEURL",
    projectId: "PROJECTID",
    storageBucket: "STORAGEBUCKET",
    messagingSenderId: "MESSAGINGSENDERID"
  },
  functionURL:"FUNCTIONSURL",

};

我现在拥有这种类型的文件,我想使用bash替换所有变量(APIKEYAUTHDOMAIN,..),请提供一些通用的解决方案!

sed  -i 's/($APIKEY)/('"$Master_APIKEY"')/g'

已用于文件中的每个变量。

2 个答案:

答案 0 :(得分:2)

要在每个变量前加上字符串$Master_,请使用:

sed 's/\(.*: "\)\(.*\)"/\1$Master_\2"/g' inputfile

此命令的工作方式如下:

  • \(.*: "\) :匹配所有内容,直到字符串: "并捕获到第1组

  • \(.*\)" :匹配最后一个"之前的所有内容并捕获到第2组

  • \1$Master_\2" :替换为第1组的内容,然后替换为$Master_和第2组的内容。

输出:

export const environment = {                                                
  production: true,                                                         
  firebase: {                                                               
    apiKey: "$Master_APIKEY",                                               
    authDomain: "$Master_AUTHDOMAIN",                                       
    databaseURL: "$Master_DATABASEURL",                                     
    projectId: "$Master_PROJECTID",                                         
    storageBucket: "$Master_STORAGEBUCKET",                                 
    messagingSenderId: "$Master_MESSAGINGSENDERID"                          
  },                                                                        
  functionURL:"FUNCTIONSURL",                                               

};

您可以添加-i.bak标志来替换原始文件并制作备份文件。

答案 1 :(得分:2)

以下是您要达到的目标的一个示例:

P.S。您并不需要全力以赴,您可以直接在文件上使用sed -i,这只是演示单行代码,我们将在给定模式下插入变量:

a=REPLACEMENT ;cat inputfile | sed "s/\"\(.*\)\"/\""$a"_\1\"/g"

您提供的输入文件中的输出:

export const environment = {
  production: true,
  firebase: {
    apiKey: "REPLACEMENT_APIKEY",
    authDomain: "REPLACEMENT_AUTHDOMAIN",
    databaseURL: "REPLACEMENT_DATABASEURL",
    projectId: "REPLACEMENT_PROJECTID",
    storageBucket: "REPLACEMENT_STORAGEBUCKET",
    messagingSenderId: "REPLACEMENT_MESSAGINGSENDERID"
  },
  functionURL:"REPLACEMENT_FUNCTIONSURL",

};