如何抑制参数扩展中的 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##*/}"
有没有办法抑制参数扩展中的通配符?考虑在其他 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##*/}"