我有三个未转义的对手shell变量.
$mystring
$old
$new
Run Code Online (Sandbox Code Playgroud)
请记住,所有三个字符串都是对抗性的.它们将包含特殊字符.他们将包含一切可能搞乱替换.如果您的替换中存在漏洞,则字符串将利用它.
用$ mystring中的$ new替换$ old最简单的函数是什么?(我无法在堆栈溢出中找到任何解决方案,以便在所有情况下都能正常工作).
这里没什么好看的 - 你需要做的唯一事情是确保你的值在参数扩展中被视为文字,这是为了确保你引用搜索值,如BashFAQ#21的相关部分所述:
result=${mystring/"$old"/$new}
Run Code Online (Sandbox Code Playgroud)
如果没有内部的双引号,$old则会被解释为fnmatch样式的glob表达式; 与他们一起,这是字面意思.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |