Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argparse-当bash特殊字符作为参数传递时,参数将被去除_Python_Bash_Argparse - Fatal编程技术网

Python argparse-当bash特殊字符作为参数传递时,参数将被去除

Python argparse-当bash特殊字符作为参数传递时,参数将被去除,python,bash,argparse,Python,Bash,Argparse,我正在使用argparse编写CLI工具 下面是我的代码片段: parser.ArgumentParser() parser.add_argument('--username') parser.add_argument('--password') args = parser.parse_args() print(args.password) 我在Mac上运行脚本: >>prog.py--用户名xyz--密码abc$xyz 输出: >>abc 我知道是bashshell将“$xyz”解释为bas

我正在使用argparse编写CLI工具

下面是我的代码片段:

parser.ArgumentParser()
parser.add_argument('--username')
parser.add_argument('--password')
args = parser.parse_args()
print(args.password)
我在Mac上运行脚本:

>>prog.py--用户名xyz--密码abc$xyz

输出:

>>abc

我知道是bashshell将“$xyz”解释为bash变量并尝试替换“$xyz”


有没有办法不用把密码括在引号里就可以解决这个问题

您可以在
$
前面加一个反斜杠:
prog.py--username xyz--password abc\$xyz


否则,不会。您正确地观察到是bash在执行此操作,当Python/argparse收到命令时,已经没有什么可以做的了。

您可以在
$
前面加一个反斜杠:
prog.py--username xyz--password abc\$xyz


否则,不会。您正确地观察到是bash在这样做,在Python/argparse接收到命令时,没有什么可以做的。

backspace转义美元符号,因此您可以这样做:\$XYZ这不是Python的问题,这是一个如何在bash中转义特殊字符的问题。我知道这不是Python的问题,我甚至知道如何在bash中转义特殊字符@dkasak回答正确。backspace转义美元符号,因此您可以这样做:\$XYZ这不是Python问题,这是一个如何转义bash问题中的特殊字符的问题。我知道这不是Python问题,我甚至知道如何转义bash中的特殊字符@德卡萨回答正确。