我有三个未转义的对抗壳变量。
$mystring
$old
$new
请记住,所有三个字符串都是对抗的。它们将包含特殊字符。它们将包含一切可能使替换混乱的事情。如果替换中存在漏洞,则字符串会利用它。
在$ mystring中用$ new替换$ old的最简单函数是什么? (对于通用替换在所有情况下都适用,我在堆栈溢出中找不到任何解决方案。)
答案 0 :(得分:5)
这里没有什么花哨的-确保您的值在parameter expansion中被当作字面值的唯一操作是确保引用了搜索值,如相关部分所述之BashFAQ #21:
result=${mystring/"$old"/$new}
如果没有双引号,$old
将被解释为fnmatch样式的glob表达式;和他们在一起,就是字面意思。