如何在bash脚本变量中转义文件路径



我想转义bash脚本中存储在变量中的文件路径。我读了一些关于转义反刻度或但它似乎不工作,因为它应该:

我有这个变量:变量值在bash脚本执行期间作为用户参数

输入。
CONFIG="/home/teams/blabla/blabla.yaml"

我需要将其更改为:/home/teams/blabla/blabla.yaml

我怎么能做到这一点,在脚本中通过sed或左右(不是手动)?

使用GNU bash及其参数扩展:

echo "${CONFIG////\/}"

输出:

<>以前/家庭 /团队/鼓励性/blabla.yaml

使用这个问题的解决方案,在你的例子中,它看起来像这样:

CONFIG=$(echo "/home/teams/blabla/blabla.yaml" | sed -e 's/[]/$*.^[]/\&/g')
echo "/home/teams/blabla/blabla.yaml" | sed 's///\//g'
/home/teams/blabla/blabla.yaml

:

反斜杠用于将以下字母/符号设置为正则表达式,反之亦然。当你需要一个反斜杠作为字母时,使用双反斜杠。

为什么需要转义?这是XY问题吗?

如果问题是您试图在替换正则表达式中使用该变量,那么给出的示例应该可以工作,但是您可能会受益于删除一些"倾斜牙签综合征",许多工具可以通过使用不同的匹配分隔符来实现。sed,例如:

$: sed "s,SOME_PLACEHOLDER_VALUE,$CONFIG," <<< SOME_PLACEHOLDER_VALUE
/home/teams/blabla/blabla.yaml

但是要非常小心。逗号在文件名中是完全有效的字符,几乎以外的任何字符都是如此。了解你的数据