Bash 如何强制展开$path的串联/*

Bash 如何强制展开$path的串联/*,bash,ubuntu,Bash,Ubuntu,我正在编写一个脚本来删除一些文件,但我不明白星号扩展是如何工作的。以下是我解决问题的尝试: rm "$path"*.txt rm "$path"/*.txt rm "$path"{*}.txt rm "$path"'*' rm "/folder/folder\ with\ spaces/*.txt" 我还尝试将双引号(“)替换为单引号(”)和反勾号(`)。每次脚本计算后,我都会收到一个错误,因为*不能替换。所以现在我有两个问题: 为什么星号没有扩展 不同的引用字符(`’…)之间有什么区别 在单

我正在编写一个脚本来删除一些文件,但我不明白星号扩展是如何工作的。以下是我解决问题的尝试:

rm "$path"*.txt
rm "$path"/*.txt
rm "$path"{*}.txt
rm "$path"'*'
rm "/folder/folder\ with\ spaces/*.txt"
我还尝试将双引号(
)替换为单引号(
)和反勾号(
`
)。每次脚本计算后,我都会收到一个错误,因为
*
不能替换。所以现在我有两个问题:

  • 为什么星号没有扩展
  • 不同的引用字符(`’…)之间有什么区别

  • 在单曲中没有有趣的事发生。甚至不是变量扩展。您尝试过的一些方法应该有效(一些取决于变量内容)。而且,如果没有匹配项,
    *
    很可能不会被扩展。你确定你的名字是对的吗?

    是的,实际上我错了另一件事。它可以工作,我得到一些奇怪的错误,因为$path中包含的空格分隔标记生成文件系统树的其他上层(受保护)路径。