gpt4 book ai didi

linux - 标准 |用包含双引号的环境变量替换值

转载 作者:行者123 更新时间:2023-12-03 09:53:34 26 4
gpt4 key购买 nike

我的环境变量包含如下双引号:

$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 替换为环境变量:

 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: unknown option to `s'

关于如何解决这个问题的任何提示?

更新:

注意:

  • “密码”包含“/”字符
  • CONNECT_CONSUMER_SASL_JAAS_CONFIG 末尾有换行符
  • 我需要再次摆脱 double 。

最后我的解决方案是:

  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

最佳答案

您确定 $CONNECT_SASL_JAAS_CONFIG 的内容是您所期望的吗?确保 $CONNECT_SASL_JAAS_CONFIG 中的内容正确。因为错误消息中的索引“168”表明您的命令行结果至少包含 168 个字符。但它不应该。

我可以重现这种错误:

    $ var=xxx/
$ sed -e "s/JAAS_CONF/$var/g;" props.txt
sed: -e expression #1, char 17: unknown option to `s'

因此,尝试通过打印变量的内容来确保您看到了正确的变量,以确保它是您所期望的,并使用“{}”保护您的命令行:

     $ sed  -e  "s/JAAS_CONF/${CONNECT_SASL_JAAS_CONFIG}/g;" props.txt

关于linux - 标准 |用包含双引号的环境变量替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64225587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com