gpt4 book ai didi

bash - 防止在 echo 参数中扩展\c

转载 作者:行者123 更新时间:2023-12-04 15:27:07 24 4
gpt4 key购买 nike

我正在用 echo 构建一个 shell 脚本。我有类似的东西:

echo "sed -i \"\\|charlie\.url\\s*=\\s*.*|c\\charlie.url = ${CHARLIE_URL}\" foo.conf" >> bar.sh

即将 foo.conf 中包含当前 charlie.url 的行替换为具有新 url 的新行(不一定在开头,因为该行可能被注释) .

我希望 bar.sh 的输出是

sed -i "\|charlie\.url\s*=\s*.*|c\charlie.url = ${CHARLIE_URL}" foo.conf

然而,c\\charlie 被解释为 c \c 哈莉,而不是c\ charlie,生成以下输出:

sed -i "\|charlie\.url\s*=\s*.*|c

我发现我可以通过使用单引号而不是双引号来防止这种情况发生,但在那种情况下,${CHARLIE_URL}(我确实需要展开)不会展开。

我的 echo 参数应该是什么样子的?

我正在使用 dash(Ubuntu 下的#!/bin/sh),但我也可以使用 bashzsh

最佳答案

代替echo,你可以试试cat:

cat << EOF >> bar.sh
sed -i "\|charlie\.url\s*=\s*.*|c\charlie.url = ${CHARLIE_URL}" foo.conf
EOF

关于bash - 防止在 echo 参数中扩展\c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62031008/

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