带星号的 zsh 参数扩展作为变量不起作用
zsh parameter expansion with asterisk as variable does not work
我正在尝试使用参数扩展删除文件扩展名。例如给定文件名 123.sh,return 123.
如果我将模式“.*”存储在变量中,它不起作用 —${filename%$suffix} 不起作用。
如果我从字面上指定模式,它确实是 — ${filename%.*}
我做错了什么?
在扩展 ${filename%$suffix}
中,$suffix
的值按字面意思 替换 。要将其替换为 模式 ,您需要使用 glob substitution:${filename%$~suffix}
但是,none 对于您要执行的操作来说,这是必需的。要从文件名中删除扩展名,您可以简单地使用 r
modifier:
❯ filename="123.sh"
❯ print $filename:r
123
我正在尝试使用参数扩展删除文件扩展名。例如给定文件名 123.sh,return 123.
如果我将模式“.*”存储在变量中,它不起作用 —${filename%$suffix} 不起作用。
如果我从字面上指定模式,它确实是 — ${filename%.*}
我做错了什么?
在扩展 ${filename%$suffix}
中,$suffix
的值按字面意思 替换 。要将其替换为 模式 ,您需要使用 glob substitution:${filename%$~suffix}
但是,none 对于您要执行的操作来说,这是必需的。要从文件名中删除扩展名,您可以简单地使用 r
modifier:
❯ filename="123.sh"
❯ print $filename:r
123