以星号作为变量的zsh参数展开不起作用

以星号作为变量的zsh参数展开不起作用,zsh,Zsh,我正在尝试使用参数扩展删除文件扩展名。e、 g.给定文件名123.sh,返回123 如果我将模式“.*”存储在变量中,则它不起作用-${filename%$suffix}不起作用 如果我按字面意思指定模式,它会-${filename%.*} 我做错了什么?在扩展名${filename%$suffix}中,$suffix的值被逐字替换。要将其替换为模式,您需要使用:${filename%$~ suffix} 然而,这些都不是你想要做的事情所必需的。要从文件名中删除扩展名,只需使用r: ❯ file

我正在尝试使用参数扩展删除文件扩展名。e、 g.给定文件名123.sh,返回123

如果我将模式“.*”存储在变量中,则它不起作用-${filename%$suffix}不起作用

如果我按字面意思指定模式,它会-${filename%.*}


我做错了什么?

在扩展名
${filename%$suffix}
中,
$suffix
的值被逐字替换。要将其替换为模式,您需要使用:
${filename%$~ suffix}

然而,这些都不是你想要做的事情所必需的。要从文件名中删除扩展名,只需使用
r

❯ filename=“123.sh”
❯ 打印$filename:r
123