【发布时间】:2019-07-07 21:29:08
【问题描述】:
我正在寻找一个单行来用变量替换替换变量字符串中变量位置的任何字符。我想出了这个可行的解决方案:
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 似乎根本没有讨论在字符串中的定位。
这可能吗?
【问题讨论】:
-
“工作解决方案”通常不起作用。使用
replacement='&'和replacement=/进行测试。见Escape a string for a sed replace pattern。 -
@pjh,是的 - 我在评论讨论中非常明确(现在显然已删除),在答案之前它绝不是一般情况下的解决方案; OP 表示这足以满足他们的用例,并要求将评论的建议作为答案发布。
标签: bash parameter-expansion shellcheck