如何使用SOPS提取值且避免输出中出现多余换行符?
解决SOPS提取值带多余换行符的问题
方法1:利用bash命令替换自动去除换行
bash的$(...)命令替换会自动忽略命令输出末尾的换行符,直接用以下方式赋值环境变量:
export password=$(sops --extract '["password"]' --decrypt test.enc.json)
赋值后用echo "$password"验证,不会出现多余换行。
方法2:用xargs过滤换行与冗余空格
如果命令替换未生效,或者值存在多余空白,可通过xargs过滤:
export password=$(sops --extract '["password"]' --decrypt test.enc.json | xargs)
注意:xargs会清除字符串首尾空格,若你的密码包含首尾空格,请勿使用此方法。
方法3:用tr精准删除换行符
之前tr无效大概率是引号使用错误,改用单引号包裹'\n',确保tr正确识别换行符:
export password=$(sops --extract '["password"]' --decrypt test.enc.json | tr -d '\n')
方法4:使用sops原生--raw选项(推荐)
sops自带--raw参数,提取值时直接输出原始字符串(不带JSON引号,也不会额外添加换行),是最省心的方案:
export password=$(sops --extract '["password"]' --raw --decrypt test.enc.json)
内容的提问来源于stack exchange,提问作者toraritte
相关产品推荐
相关产品推荐

