【发布时间】:2019-01-01 04:07:22
【问题描述】:
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)
【问题讨论】:
-
想要的输出到底是什么?
-
并显示对脚本的典型调用,其值为 $1、$2、$3。祝你好运。
-
此外,您说“就地编辑”、“查找和替换”,但您的
sed代码始终附加到文件$a\...的末尾。 (这可能有效)。因此,我们需要查看您所需的输出样本。祝你好运。 -
我的错,已编辑信息
-
对你的 Q 的更新非常好。但对我来说真的太晚了。如果您仍然遇到问题,请明天 Ping。并阐明如何调用脚本一次,但获得 3 个预期输出。我看到每次调用
./envScript都会附加两行。祝你好运。
标签: linux sed text-search