我试图接收使用python命令行参数,但我在接收&以及参数
脚本
import sys
START_D = sys.argv[1]
print START_D
这很好用
python test.py sdsss
sdsss
但如果我使用&它给了一些随机的东西
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
问题是什么,我如何解决它,我想使用&在参数中,当我发送参数时如何使用它?
答案 0 :(得分:6)
&
是你的shell 中的元字符,并告诉你的shell将命令放在后台。这就是为什么你看到后台进程的PID在终端上回显的原因:
[1] 8682
如果您不希望shell解释它,请使用反斜杠或引号将其转义:
$ python test.py sds\&ss
$ python test.py "sds&ss"
答案 1 :(得分:4)
符号&
在终端中有意义。这意味着在后台执行第一个命令,在前面执行第二个命令。不幸的是,ss
也是一个有效的命令。您在后台执行python test.py sds
并执行ss
。 ss
是一种网络监控协议,这就是您在这些输出中看到的原因。
使用如下命令:python test.py 'sds&ss'