You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Click库自动去除重复符号问题及解决方法咨询

Python Click库重复$符号参数被自动移除的问题解决

这不是Click库的Bug,问题出在你使用的Shell(如Bash)的转义机制上,和Click本身无关。

原因解释

在Bash等常见Shell中,$是用于引用环境变量的特殊字符。Shell会先对命令行参数做解析:连续的两个$会被解析为一个普通的$符号。所以你执行principal_cmd print trial$$$1时,Shell会先把trial$$$1处理成trial$$1,再将这个结果传给Click程序,最终导致输出和输入不一致。

解决方法

有两种方式可以避免Shell的自动解析:

  • 用单引号包裹参数:单引号内的所有字符都会被Shell当作普通字符处理,不会解析特殊符号。执行命令如下:
    principal_cmd print 'trial$$$1'
    
  • 给每个$添加反斜杠转义:通过反斜杠告诉Shell这是普通字符,无需解析。执行命令如下:
    principal_cmd print trial\$\$\$1
    

验证Click本身无问题

如果直接在Python代码中调用函数,传入含多个$的字符串,Click不会做任何修改:

import click
    
@click.group()
def principal_cmd():
    """CLI group"""

@principal_cmd.command("print")
@click.argument("word", type=click.STRING)
def print_str(word: str):
    print(word)

# 直接调用验证
if __name__ == "__main__":
    print_str("trial$$$1")  # 输出:trial$$$1

内容的提问来源于stack exchange,提问作者salvatorelbr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:45:48