首页 > 解决方案 > 这个 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/someproject
/Users/my.name/projects/someproject/foo/bar/baz
foo/bar/baz

如何从一开始SUBPATH="${WORKDIR/$STACKDIR\//}"就删除?STACKDIRWORKDIR

标签: bash

解决方案


看看Shell-Parameter-Expansion

${parameter/pattern/string}

从上面的链接:模式被扩展以产生一个模式,就像在文件名扩展中一样。参数被扩展,模式与其值的最长匹配被替换为字符串。

\\被替换为一个\

希望这可以帮助。

附录:POSIX 未指定。并非所有的 Unix shell 都实现了它。


推荐阅读