zsh函数:替换错误

zsh函数:替换错误,zsh,zshrc,Zsh,Zshrc,我在.zshrc文件中编写了以下函数: myfunc() { folderpath=“${find.-type d-name myfolder}” package=“${basename$PWD}” ln-fs“$path”“$HOME”/links/“$package”/myfolder } 在source~/.zshrc并在命令行上运行myfunc后,我得到以下错误: myfunc:2: bad substitution 为什么?在zsh中将命令输出管道化到变量中的正确语法是: pack

我在
.zshrc
文件中编写了以下函数:

myfunc()
{
folderpath=“${find.-type d-name myfolder}”
package=“${basename$PWD}”
ln-fs“$path”“$HOME”/links/“$package”/myfolder
}
source~/.zshrc
并在命令行上运行
myfunc
后,我得到以下错误:

myfunc:2: bad substitution

为什么?

在zsh中将命令输出管道化到变量中的正确语法是:

package=$(basename $PWD)

zsh
中,您也可以简单地编写

package=$PWD:t

不需要命令替换。

在该函数中,您实际在哪里使用
folderpath
?在
zsh
中,我甚至不想费心于
find
:而是使用
**/myfolder/
。这是大多数shell中正确的语法。(
ksh
是一个值得注意的例外,其中
${…}
允许您在当前shell中运行(shell)命令,而不是子shell)。