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)
在调用之前总是会找到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)
当前修改的app.js
在运行命令之后
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
预期结果
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - PROD'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.PROD
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)
问题正是shelter所说的。您需要使用s
,而不是使用$a
,如下所示:
sed '/VERSION/s/UAT1/PROD/;/ENVIRONMENT/s/TEST1/PROD/' app.js