cp: 无法统计 '/some/path/*': 没有那个文件或目录

syx*_*byi 7 linux bash-scripting

我的脚本代码是:

var="/some/path"
cp "$var*" "/another/path"
Run Code Online (Sandbox Code Playgroud)

然后它抛出:

cp: cannot stat '/some/path/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我试过这个并得到同样的错误:

cp "${var}*" "/another/path"
Run Code Online (Sandbox Code Playgroud)

最后,我通过以下方式解决了这个问题:

cp "$var"* "/another/path"
Run Code Online (Sandbox Code Playgroud)

这次命令成功执行,但我想知道为什么。

你能给出一个解释吗?

Erl*_* D. 13

当您使用"$var*"输出 will 时/some/path*, where*被视为一个字符(不是正则表达式,因为它在双引号内)。因此,在您的情况 ( /some/path/*) 中,cp正在搜索目录*内命名的文件/文件夹path

当它的双引号外面它看作是一个正则表达式模式,这意味着任何以启动pathpath1path2等)。
或者如果path/*(该目录上的任何内容)。