${var/a/b/\c} 是什么意思?

${var/a/b/\c} 是什么意思?

我对这个说法有点困惑(建设?)。我找不到任何足够的资料(我什至不知道如何称呼它)。这里发生了什么?

bash-4.3$ var="a/b"
bash-4.3$ f=${var/b/c/\d}                                                                                                                                                                                                             
bash-4.3$ echo $f                                                                                                                                                                                                                     
a/c/d

或这个:

bash-4.3$ var="b/a"                                                                                                                                                                                                                   
bash-4.3$ f=${var/b/c/\d}                                                                                                                                                                                                             
bash-4.3$ echo $f                                                                                                                                                                                                                     
c/d/a 

谢谢

答案1

了解 bash 的参数扩展。在您的示例中,您使用搜索和替换语法来替换给定模式的第一次出现。

${parameter/pattern/string}

例子:

> X="aaaa"
> echo ${X/a/b}   # substitute first occurence of a with b
> baaa

替换所有出现的语法是:

${parameter//pattern/string}

例子:

> X="aaaa"
> echo ${X//a/b}   # substitute all occurences of a with b
> bbbb

因此,在第一个示例中,您的参数是“a/b”,并且您告诉 bash 将“a/b”(var 的值)中第一次出现的“b”替换为字符串“c/d”(这会导致“a/c/d”)。请注意,“\d”是不必要的转义 - 与单独的“d”没有区别)。

相关内容