export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.TEST1
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)
app.js文件的内容如上所述。
在以下构建期间,我正在尝试替换文件的内容
sh "./envScript 'app.js' 2 \"$VERSION_NUMBER ($BUILD_NUMBER) - PROD\""
和我的envScript.sh如下
#!/bin/bash
if [ $# == 3 ]; then
sed -i '' '/export const CURRENT_VERSION =/d' $1
sed -i '' '/export const CURRENT_ENVIRONMENT =/d' $1
sed -i '' '$a\
export var CURRENT_VERSION = '"'$3'" $1
case $2 in
0)
sed -i '' '$a\
export var CURRENT_ENVIRONMENT = ENVIRONMENT.UAT1' $1
;;
1)
sed -i '' '$a\
export var CURRENT_ENVIRONMENT = ENVIRONMENT.UAT2' $1
;;
2)
sed -i '' '$a\
export var CURRENT_ENVIRONMENT = ENVIRONMENT.PROD' $1
;;
esac
else
echo "You need to pass AppConfig.js path as a parameter"
fi
问题,这部分起作用,但始终会在文件末尾更新CURRENT_VERSION和CURRENT_ENVIRONMENT,因此getEnvironmentFile(CURRENT_ENVIRONMENT)
默认为CURRENT_ENVIRONMENT=undefined
选项,因为
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'
位于文件末尾。
请求的帮助:我们如何使用sed在文件的同一行进行就地编辑,基本上是在这种情况下找到并替换,因此getEnvironmentFile(CURRENT_ENVIRONMENT)
总是会找到{{ 1}},并且不会默认为undefined。任何帮助都非常感谢。
运行脚本之前的原始app.js
CURRENT_ENVIRONMENT
当前修改的app.js
运行命令后
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.TEST1
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)
更新的文件
sh "./envScript '../../App/Config/AppConfig.js' 2 \"$VERSION_NUMBER ($BUILD_NUMBER) - PROD\""
预期结果
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - PROD'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.PROD
答案 0 :(得分:2)
问题恰恰是脱壳机所说的。无需使用$a
,而需要使用s
,如下所示:
sed '/VERSION/s/UAT1/PROD/;/ENVIRONMENT/s/TEST1/PROD/' app.js