如何使用 echo 在 Jenkins 的 Execute Shell 中传递参数化值?

How to pass parameterized values in Jenkins's Execute Shell using echo?

我运行宁Cypress test suites using Jenkins。我已经创建了 Execute shell 个脚本 运行 整个套件并且它工作得很好,就像这样:

cd frontend
node --version
yarn install
echo '{ "USERNAME": "redacted-harcoded-username", "PASSWORD": "redacted-harcoded-password", BASE_URL: "redacted-harcoded-baseURl" }' > cypress.env.json
yarn cypress:run

但是,我像这样传递了一些 Jenkins 的参数:

cd frontend
node --version
yarn install
echo `{ "USERNAME": ${USERNAME}, "PASSWORD": ${PASSWORD}, BASE_URL: ${BASE_URL} }` > cypress.env.json
yarn cypress:run --spec ${SPECS_TO_RUN}

不幸的是,在使用 echo 时,我需要切换单引号才能传递动态值,如下所示:

echo `{ "USERNAME": ${USERNAME}, "PASSWORD": ${PASSWORD}, BASE_URL: ${BASE_URL} }` > cypress.env.json

这会导致我的命令失败并提示我 json 文件无效。有解决此问题的解决方法吗?

我能够通过 bash 转义的这种组合找到解决方案:

echo { \"USERNAME\": \"${USERNAME}\", \"PASSWORD\": \"${PASSWORD}\", \"BASE_URL\": \"${BASE_URL}\"  } > cypress.env.json