为什么我不能在python命令行中使用&

0 python shell command-line

我试图接收使用python命令行参数,但我在接收和与参数一起有一些问题

脚本

import sys
START_D = sys.argv[1]
print START_D
Run Code Online (Sandbox Code Playgroud)

这很好用

python test.py sdsss
sdsss
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用&它正在给一些随机的东西

python test.py sds&ss
[1] 8682
sds
Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
u_seq  ESTAB      0      0      @0001b 25095                 * 25096                
u_seq  ESTAB      0      0      @0001a 25086                 * 25087                
u_seq  ESTAB      0      0      @00020 74036                
.
.
.
.
.
tcp    ESTAB      0      0      2405:205:830d:2a38:492a:5a32:cffe:eca1:34196                  2404:6800:4009:807::2003:https                
[1]+  Done                    python test.py sds
Run Code Online (Sandbox Code Playgroud)

什么是issuse如何修复它,我想在参数中使用&,所以当我发送参数时如何使用它?

Mar*_*ers 6

&shell中元字符,并告诉shell将命令放在后台.这就是为什么你看到你的终端上回应了后台进程的PID:

[1] 8682
Run Code Online (Sandbox Code Playgroud)

如果您不希望shell解释它,请使用反斜杠或引号将其转义:

$ python test.py sds\&ss
$ python test.py "sds&ss"
Run Code Online (Sandbox Code Playgroud)