sed如何使用bash变量查找和替换值

时间:2018-09-17 22:11:01

标签: node.js bash docker sed

我正在尝试使用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中使用“ /”。正如查尔斯在下面指出的那样,这可能是罪魁祸首。

0 个答案:

没有答案