python argparse shell 特殊字符

python argparse shell special chars

我有一个必须输入密码的脚本。 这适用于大多数密码,但 "good" 除外,我得到奇怪的结果。

#! /usr/local/bin/python
from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("-t", "--test")

print(parser.parse_args())

并用

调用它
./test.py -t test$$test

将打印

Namespace(test='test5365test')

shell 将密码视为特殊字符。

我的问题是,是否有办法在我的代码中禁用它并且不强制用户正确转义该字符?

当您的代码获取参数时,shell 已经处理了它们。所以你必须在shell命令行上用单引号或转义来保护它们

例如,而不是

./test.py -t test$$test

你应该使用

./test.py -t 'test$$test'