在 bash 中给出以下字符串
original="a bird flew in my window"
old="a"
new="the"
以下内容,在原文后使用 2 个斜线
result=${original//$old/$new}
将产生结果=“鸟儿飞进我的窗户”
我在至少一本书中看到过这种带有两个斜线的语法,还有
https://stackoverflow.com/questions/9142131/replace-a-word-with-another-in-bash
但是下面带有 1 个斜线的语句也会产生同样的效果
result=${original/$old/$new}
在某些情况下,使用 1 个斜线或 2 个斜线是否有区别?
答案1
${parameter/pattern/string}
这图案被扩展以产生一个模式,就像文件名扩展一样。范围被扩展,并且最长的匹配是图案其价值被替换为细绳。 […]如果图案以 开头
/
,所有匹配图案被替换为字符串。通常只替换第一个匹配项。
(来源(强调我的)
尝试使用original="a sparrow flew in my window"
。您将得到the sparrow flew in my window
或。您的示例没有显示任何差异,因为您的扩展中the sptherrow flew in my window
只有一个。a
$original