Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个bash字符串操作是如何工作的?_Bash - Fatal编程技术网

这个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

我对正在使用的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\/}”
如何从
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