我正在编写一个工具,它接收一个文件模式的参数,如下所示:
mytool arg1 *
问题是:字符*
被解析为当前目录的内容,几乎与ls
命令一样。如果我使用grave(`(转义通配符,它也会被命令接收。
我该如何解决那个问题?
使用逐字逐句(单引号(字符串('...'
([1]来防止PowerShell在类Unix平台上执行的globbing(路径名扩展((仅限(调用外部程序时执行:
mytool arg1 '*'
我无法解释为什么字符独立转义(`*
(不起作用(从PowerShell 7.2.6开始(-可以说,它应该起作用;该问题已在GitHub第18038期中报告。
在Windows上,PowerShell执行noglobbing,并且*
、'*'
和`*
都作为逐字*
传递到外部程序。
正如您所说,假设您使用的是Windows,那么执行globbing的一定是您所调用的基于Python的工具。
[1]可扩展(双引号(字符串("..."
(也可以工作,但不需要扩展(字符串插值(