在将内容从CICD变量复制到gitlab-ci.yml文件CICD变量时,我遇到了一个问题
我试图在yml文件中访问这个值,其中这个值替换了另一个值。
在这里,我面临的问题是,在使用sed命令进行替换时,它不会将\n复制为\n,而是会使行中断。但我想把它贴上去。
PRIVATE_KEY='-----BEGIN PRIVATE KEY-----\nMIIEvQIBA\n-----END PRIVATE KEY-----\n'
sed -i -e \a s,PRIVATE_KEY,'-----BEGIN PRIVATE KEY-----\nMIIEv\nQIBA\n-----END PRIVATE KEY-----\n',g key.json
输出:
-----BEGIN PRIVATE KEY-----
MIIEv
QIBA
-----END PRIVATE KEY-----
这不是我需要的。
发布于 2022-06-02 09:15:41
您可以使用
sed -i "s,PRIVATE_KEY,$(sed 's/[&/\]/\\&/g' <<< "$PRIVATE_KEY"),g" key.json
在这里,sed 's/[&/\]/\\&/g' <<< "$PRIVATE_KEY"
在变量文本中的&
、/
或\
字符之前添加一个转义反斜杠。
见在线演示
#!/bin/bash
PRIVATE_KEY='-----BEGIN PRIVATE KEY-----\nMIIEvQIBA\n-----END PRIVATE KEY-----\n'
sed "s,PRIVATE_KEY,$(sed 's/[&/\]/\\&/g' <<< "$PRIVATE_KEY"),g" <<< "PRIVATE_KEY"
输出:
-----BEGIN PRIVATE KEY-----\nMIIEvQIBA\n-----END PRIVATE KEY-----\n
https://stackoverflow.com/questions/72473607
复制相似问题