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
相关产品推荐
相关产品推荐

