【发布时间】:2021-01-21 07:41:42
【问题描述】:
我的环境变量包含如下双引号:
$echo $CONNECT_SASL_JAAS_CONFIG
org.apache.kafka.common.security.plain.PlainLoginModule required username="USER" password="XXXX/YYY";
“导出”命令的输出:
declare -x CONNECT_SASL_JAAS_CONFIG="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"USER\" password=\"XXXX/YYY\";
我的模板文件内容如下(props.txt):
sasl.jaas.config = JAAS_CONF
我尝试使用以下命令将 JAAS_CONF 替换为 env 变量:
sed -e "s/JAAS_CONF/$CONNECT_SASL_JAAS_CONFIG/g;" props.txt
这会产生以下错误:
/tmp# sed -e "s/JAAS_CONF/$CONNECT_CONSUMER_SASL_JAAS_CONFIG/g;" props.txt sed: -e expression #1, char 168: `s' 的未知选项
关于如何解决这个问题的任何提示?
更新:
注意:
- “密码”包含“/”字符
- CONNECT_CONSUMER_SASL_JAAS_CONFIG 末尾有一个换行符
- 我需要再次逃脱双打。
所以最后我的解决方案是:
export TMP_JAAS=${SASL_JAAS_CONFIG//$'\"'/'\\"'}
export PARSED_JAAS=${TMP_JAAS//$'\n'/\ }
sed -e "s|JAAS_CONF|${PARSED_JAAS//$'\n'/\ }|g" file.cong > /tmp/app.conf
【问题讨论】: