如何抑制参数扩展中的 globbing?

How can I suppress globbing in parameter expansion?

有没有办法抑制参数扩展中的通配符?考虑在其他 xml 文件中的一个目录中的文件名 *.xml 的情况。有没有办法进行参数扩展 ${param##*/} 只影响文件 *.xml 而不是所有 xml 文件?

param=./*.xml
echo "$param" # Displays only ./*.xml
echo $param # Displays ./*.xml ./invoice.xml ./bla.xml ...
echo ${param##*/} # Displays *.xml invoice.xml bla.xml ...
# what I want:
echo ${param##*/} # Displays only *.xml

正在将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。

问题是没有引用允许 shell 扩展 glob 或通配符的 BASH 表达式。

您应该在 shell 中使用引号作为:

param='./*.xml'
echo "$param"
echo "${param##*/}"