GitHub Actions 中的 sed -i 命令中的 " 未正确转义为 url 中的双引号。

huangapple go评论53阅读模式
英文:

Github actions sed -i "s/" not escaping properly "//" in url

问题

我遇到了这样一个愚蠢的问题,我无法解决。我正在使用 GitHub 操作,想要替换一些 URL。
我的 sed 看起来像这样:
sed -i "s/${{ inputs.original-variable }} 对于 inputs.original-variable,我想使用这样的 URL:'wss://mm-websocket.mydomain.com' 但每次运行时它没有正确转义,我得到这个错误 sed: -e expression #1, char 11: unknown option to s' "s/wss://mm-websocket.mydomain.com

我试图使用 const,并替换整个常量为一个字符串,但对我来说仍然无法工作。

此外,我如何在本地运行我的 CI 作业,gh run file.yml 能行吗?

编辑:
在 sed 之前,我有 'wss://mm-websocket.mydomains.com/'
经过 sed 后,我想要得到 wss://mm-websocket.mydomain.com

.yml 文件中的实际步骤

original-variable: wss://mm-websocket.mydomains.com/
destination-variable: wss://mm-websocket.mydomain.com/
file-path: 'apps/app/src/environments/environment.prod.ts'

实际替换步骤

run: |
  destinationVariable=${{ inputs.destination-variable }}
  parsedDestinationVariable="${destinationVariable//\//\\/}"
  sed -i "s/${{ inputs.original-variable }}/$parsedDestinationVariable/" "${{ inputs.file-path }}"
英文:

I have such silly issue that I can't get working. I am using GitHub actions and I want to replace some ulr.
My sed looks like this:
sed -i "s/${{ inputs.original-variable }} for inputs.original-variable i want to use such url: 'wss://mm-websocket.mydomain.com' but every time this is running it is not properly escaping and i do get this error sed: -e expression #1, char 11: unknown option to s' "s/wss://mm-websocket.mydomain.com

I was trying to use const and replace whole const with a string not string itslef, but still did not work for me

Also how i can run my ci job localy will gh run file.yml work?

Edit:
Before sed I have 'wss://mm-websocket.mydomains.com/'
After sed I want to have wss://mm-websocket.mydomain.com

Actual step in .yml file

original-variable: wss://mm-websocket.mydomains.com/
destination-variable: wss://mm-websocket.mydomain.com/
file-path: 'apps/app/src/environments/environment.prod.ts'

actual replace step

run: |
  destinationVariable=${{ inputs.destination-variable }}
  parsedDestinationVariable="${destinationVariable//\//\\/}"
  sed -i "s/${{ inputs.original-variable }}/$parsedDestinationVariable/" "${{ inputs.file-path }}"

答案1

得分: 2

使用 sed 处理 URL 时,使用斜杠 / 可能会引起问题,尝试使用不同的分隔符,如 @

sed -i "s@${{ inputs.original-variable }}@$parsedDestinationVariable@" "${{ inputs.file-path }}"
英文:

When using sed for URLs, using forward slashes / could cause problems, try using a different deliminator like @

sed -i "s@${{ inputs.original-variable }}@$parsedDestinationVariable@" "${{ inputs.file-path }}"

huangapple
  • 本文由 发表于 2023年4月17日 20:00:33
  • 转载请务必保留本文链接:https://go.coder-hub.com/76034939.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定