用bash替换环境变量

用bash替换环境变量,bash,shell,Bash,Shell,我现在有这种类型的文件,我想用bash替换所有变量(APIKEY,AUTHDOMAIN,…),请提供一些通用解决方案 export const environment = { production: true, firebase: { apiKey: "APIKEY", authDomain: "AUTHDOMAIN", databaseURL: "DATABASEURL", projectId: "PROJECTID", storageBucke

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

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

};

已用于文件中的每个变量

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

sed  -i 's/($APIKEY)/('"$Master_APIKEY"')/g'
此命令的工作方式如下:

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

  • \(.*)”
    :匹配最后一个
    之前的所有内容,并在组2中捕获

  • \1$Master\u2“
    :替换为组1的内容,然后替换为组2的内容

输出:

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

您可以包含
-i.bak
标志以替换原始文件并创建备份文件。

要使用字符串
$Master\uuuz>预加每个变量,请使用:

sed  -i 's/($APIKEY)/('"$Master_APIKEY"')/g'
此命令的工作方式如下:

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

  • \(.*)”
    :匹配最后一个
    之前的所有内容,并在组2中捕获

  • \1$Master\u2“
    :替换为组1的内容,然后替换为组2的内容

输出:

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

您可以包括
-i.bak
标志来替换原始文件并创建备份文件。

以下是您尝试实现的示例:

另外,您不需要使用cat和all,您可以直接在文件上使用sed-i,这只是为了演示一行代码,其中我们在给定模式上插入变量:

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",                                               

};
您提供的输入文件的输出:

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

下面是一个您试图实现的示例:

另外,您不需要使用cat和all,您可以直接在文件上使用sed-i,这只是为了演示一行代码,其中我们在给定模式上插入变量:

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",                                               

};
您提供的输入文件的输出:

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


不清楚,你能说得更详细些吗?你想编辑哪个文件?变量值应该从哪里获取?在这个问题上python是如何相关的?看起来像是javascriptme@RavinderSingh13文件已给定,变量值应为anything@soheshdoshi如果您确切地知道要替换的是什么,那么为什么不直接执行
sed“s/$APIKEY/$Master\\u$APIKEY”
这使用
sed
,这与
bash
无关。您是否需要
bash
code来执行此操作?不清楚,请您提供更多详细信息?你想编辑哪个文件?变量值应该从哪里获取?在这个问题上python是如何相关的?看起来像是javascriptme@RavinderSingh13文件已给定,变量值应为anything@soheshdoshi如果您确切地知道要替换的是什么,那么为什么不直接执行
sed“s/$APIKEY/$Master\\u$APIKEY”
这使用
sed
,这与
bash
无关。您是否需要
bash
code来执行此操作?它会给出类似apikey的输出:“REPLACEMENT\u xyzv”时间,用于用环境替换占位符variable@sheshdoshi你能分享更多关于变量和你的实现的细节吗?它的输出像apikey:“REPLACEMENT_xyzv”用环境替换占位符的时间variable@sheshdoshi你能分享更多关于变量和你的实现的细节吗?FUNCTIONSURL呢?如果你也想替换
FUNCTIONSURL
,那么就用
\(.*:“\)
替换
\(.*******”\)
,以便匹配冒号后的零个或多个空格。FUNCTIONSURL呢?如果要同时替换
FUNCTIONSURL
,请将正则表达式中的
\(.*:\)
替换为
\(.*:*)
,以便匹配冒号后的零个或多个空格。