我正在尝试使用package.json
来替换sed
中的值,以查找静态值并将其替换为动态bash变量。但是,Circle CI报告这是错误的,但对我来说很好。
圆CI
GETTING CURRENT DEPLOYMENT INFORMATION...
sed: bad option in substitution expression
sed: bad option in substitution expression
Dockerfile
COPY --from=build /home/node/app/ .
## Get current GIT BRANCH and COMMIT HASH and provide to image
RUN mkdir /root/.gitinfo
COPY ./.git/HEAD /root/.gitinfo/.
COPY ./.git/config /root/.gitinfo/.
RUN echo "GETTING CURRENT DEPLOYMENT INFORMATION..."; \
cat /root/.gitinfo/config | grep url | head -1 | xargs > /GIT_VERSION_URL.txt; \
cat /root/.gitinfo/HEAD | head -1 | xargs > /GIT_VERSION_REF.txt; \
FILE_LINE=$(cat /GIT_VERSION_URL.txt | head -1 | xargs | tr -d '\n'); \
sed -i "s/DOCKER_WILL_PROVIDE_VALUE_A1/$FILE_LINE/g" /home/node/app/package.json; \
FILE_LINE=$(cat /GIT_VERSION_REF.txt | head -1 | xargs | tr -d '\n'); \
sed -i "s/DOCKER_WILL_PROVIDE_VALUE_A2/$FILE_LINE/g" /home/node/app/package.json; \
cat /GIT*; \
rm -rf /root/.gitinfo;
## END
package.json
...
"git": {
"GIT_URL": "DOCKER_WILL_PROVIDE_VALUE_A1",
"GIT_REF": "DOCKER_WILL_PROVIDE_VALUE_A2"
},
...
为什么不进行替换?
编辑:我不认为这是重复的。使这种情况与众不同的原因是,我试图在Docker 中运行它,并在replace regex中进行动态变量替换。我不在正则表达式中使用“ /”,因此此Sed error : bad option in substitution expression与我的问题不相似。谢谢!
编辑2:我实际上在GIT URL中使用“ /”。正如查尔斯在下面指出的那样,这可能是罪魁祸首。