在使用位置变量时,是否可以解析SC2001(“看看你是否可以使用$ {variable // search / replace}代替”)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用位置变量时,是否可以解析SC2001(“看看你是否可以使用$ {variable // search / replace}代替”)?相关的知识,希望对你有一定的参考价值。
我正在寻找一个衬垫,用变量替换替换变量位置的变量字符串中的任何字符。我提出了这个有效的解决方案:
echo "$string" | sed "s/./${replacement}/${position}"
示例用法:
string=aaaaa
replacement=b
position=3
echo "$string" | sed "s/./${replacement}/${position}"
aabaa
不幸的是,当我使用包含我当前解决方案的脚本运行shellcheck时,它告诉我:
SC2001: See if you can use ${variable//search/replace} instead.
我想使用参数扩展,就像它建议的那样,而不是使用sed管道,但我不清楚使用位置变量时的正确格式。 official documentation似乎根本不讨论字符串中的定位。
这可能吗?
答案
Bash没有所有sed工具的一般情况替换(shellcheck wiki page for warning SC2001承认同样多),但在某些特定情况下 - 包括提出的情况 - 参数扩展可以组合以实现期望的效果:
string=aaaaa
replacement=b
position=3
echo "${string:0:$(( position - 1 ))}${replacement}${string:position}"
在这里,我们将值拆分为子串:${string:0:$(( position - 1 ))}
是要替换的内容之前的文本,${string:position}
是该点之后的文本。
以上是关于在使用位置变量时,是否可以解析SC2001(“看看你是否可以使用$ {variable // search / replace}代替”)?的主要内容,如果未能解决你的问题,请参考以下文章
解析文档时是不是可以检测 HTML 元素的位置(页脚、侧边栏)?
GameEngine.obj : error LNK2001: 无法解析的外部符号 private: static class GameEngine * GameEngine::