1

有没有办法抑制参数扩展中的通配?考虑*.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
4

1 回答 1

2

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

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

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

param='./*.xml'
echo "$param"
echo "${param##*/}"
于 2020-03-12T10:30:49.943 回答