如何“查看”bash 命令行参数扩展的背后?

Gil*_*ert 3 bash perl

我想要一个 Perl 脚本接受文件名的通配符 (foo-*.ba?)(然后针对整个目录子树进行处理)。

当然,我可以告诉脚本的用户引用参数('foo-*.ba?'),但这并不是很优雅 - 通配符方法是作为传递正则表达式的用户友好替代方法(也被接受,当然,必须引用)。问题是,shell(在我的例子中是 bash)将命令行扩展到与当前目录中的通配符模式匹配的文件,因此我可怜的脚本得到了 @ARGV 预设,其中包含 bash 找到的任何内容(通常什么都没有,或者一堆) foo-lotsof.baz 等)。

是否有 bash 未扩展的命令行的副本?

yst*_*sth 5

请不要尝试解决此问题。更改参数的解释方式是由用户在选择引用时完成的。即使你可以(我知道 bash 中有一些我一无所知的钩子可能使之成为可能),你也不会以这种方式提供更好的用户体验,你会提供更糟糕的体验。