我对这个说法有点困惑(建设?)。我找不到任何足够的资料(我什至不知道如何称呼它)。这里发生了什么?
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”没有区别)。