PowerShell调用含通配符参数的工具时参数解析异常求助
如何让命令行工具接收未被Shell解析的
*通配符参数? 问题场景
我正在开发一款需要接收文件模式作为参数的工具,预期调用方式如下:
mytool arg1 *
实际遇到的问题:
- Shell会优先将
*解析为当前目录下的所有文件,导致工具收到的是一堆文件名而非*本身 - 若用反引号转义
*,工具会连转义符一起接收,不符合需求
可行解决方案
- 用单引号包裹
*:Shell不会解析单引号内的通配符,工具可直接获取*mytool arg1 '*' - 用双引号包裹
*:通用场景下,双引号内的*不会被Shell解析mytool arg1 "*" - 用反斜杠转义
*:反斜杠会被Shell识别为转义标记,仅将*传递给工具mytool arg1 \* - 工具端适配(可选):如果希望用户无需额外转义,可在工具内做逻辑判断:
- 检测到参数为当前目录全量文件列表时,自动合并为
*(注意:该方法存在歧义,需结合业务场景谨慎使用) - 若工具通过Shell脚本实现,可在开头添加
set -f关闭通配符解析
- 检测到参数为当前目录全量文件列表时,自动合并为
内容的提问来源于stack exchange,提问作者Paulo Alves
相关产品推荐
相关产品推荐

