这个bash字符串操作是如何工作的?
我对正在使用的bash脚本有点困惑。下面是一个让我困惑的简化语法/操作:这个bash字符串操作是如何工作的?,bash,Bash,我对正在使用的bash脚本有点困惑。下面是一个让我困惑的简化语法/操作: STACKDIR="/Users/my.name/projects/someproject" WORKDIR="/Users/my.name/projects/someproject/foo/bar/baz" SUBPATH="${WORKDIR/$STACKDIR\//}" echo $STACKDIR echo $WORKDIR echo $SUBPATH 这个输出 /Users/my.name/projects
STACKDIR="/Users/my.name/projects/someproject"
WORKDIR="/Users/my.name/projects/someproject/foo/bar/baz"
SUBPATH="${WORKDIR/$STACKDIR\//}"
echo $STACKDIR
echo $WORKDIR
echo $SUBPATH
这个输出
/Users/my.name/projects/someproject
/Users/my.name/projects/someproject/foo/bar/baz
foo/bar/baz
SUBPATH=“${WORKDIR/$STACKDIR\/}”
如何从WORKDIR
开始删除STACKDIR
?这是一种替代
这个例子可以说明这一点
$ v="abc"
$ echo ${v/b/d}
adc
看看
请参见${parameter/pattern/string}
从上面的链接:模式被扩展以产生一个模式,就像在文件名扩展中一样。参数展开,模式与其值的最长匹配替换为字符串
将双\\
替换为一个\
希望这有帮助
附录:POSIX没有规定。并非所有Unix shell都实现它。它是子字符串的替换 请参见
${string/substring/replacement}
需要澄清的是:
$string=“你好”
$echo${string/“LL”/“LL”}
美元你好
更多信息请访问:检查
man bash