我有一个问题,在复制内容从CICD变量到gitlab-ci。yml文件蔡先生变量
这个值我试图在yml文件中访问它,在这个值中替换另一个值。
这里我面临的问题是,当使用sed命令进行替换时,它不会将n复制为n,而是给出换行符。但是我希望n是原样粘贴的
PRIVATE_KEY='-----BEGIN PRIVATE KEY-----nMIIEvQIBAn-----END PRIVATE KEY-----n'
sed -i -e a s,PRIVATE_KEY,'-----BEGIN PRIVATE KEY-----nMIIEvnQIBAn-----END PRIVATE KEY-----n',g key.json
输出:
-----BEGIN PRIVATE KEY-----
MIIEv
QIBA
-----END PRIVATE KEY-----
这不是我需要的。
可以使用
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-----nMIIEvQIBAn-----END PRIVATE KEY-----n'
sed "s,PRIVATE_KEY,$(sed 's/[&/]/\&/g' <<< "$PRIVATE_KEY"),g" <<< "PRIVATE_KEY"
输出:
-----BEGIN PRIVATE KEY-----nMIIEvQIBAn-----END PRIVATE KEY-----n