替换/替换外壳脚本中的对抗性子字符串变量

时间:2018-07-12 22:24:48

标签: regex bash shell

我有三个未转义的对抗壳变量。

$mystring
$old
$new

请记住,所有三个字符串都是对抗的。它们将包含特殊字符。它们将包含一切可能使替换混乱的事情。如果替换中存在漏洞,则字符串会利用它。

在$ mystring中用$ new替换$ old的最简单函数是什么? (对于通用替换在所有情况下都适用,我在堆栈溢出中找不到任何解决方案。)

1 个答案:

答案 0 :(得分:5)

这里没有什么花哨的-确保您的值在parameter expansion中被当作字面值的唯一操作是确保引用了搜索值,如相关部分所述之BashFAQ #21

result=${mystring/"$old"/$new}

如果没有双引号,$old将被解释为fnmatch样式的glob表达式;和他们在一起,就是字面意思。