YQ v4如何将YAML转为.env格式并保留字符串引号?
解决yq v4转换YAML到.env时字符串引号丢失的问题
问题场景
给定如下YAML结构:
test: A: "customData" B: 123
需要转换为.env格式:
A="customData" B=123
原命令yq '.test | to_entries | .[] | .key + "=" + .value' ./input.yaml > ./.env执行后,字符串的引号会丢失,且早期版本的tostring函数在v4中失效,style="double"也无法解决。
解决方案
使用yq v4内置的@sh格式化函数,它会自动按照shell兼容的格式处理值,给字符串添加双引号,数字等类型保持原样:
yq '.test | to_entries | .[] | .key + "=" + (.value | @sh)' ./input.yaml > ./.env
效果验证
执行上述命令后,输出的.env内容与预期一致:
A="customData" B=123
内容的提问来源于stack exchange,提问作者M07
相关产品推荐
相关产品推荐

