【问题标题】:why cant i use & in python command line为什么我不能在 python 命令行中使用 &
【发布时间】:2016-12-07 16:07:12
【问题描述】:

我正在尝试使用 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

问题是什么,我该如何解决它,我想在参数中使用 &,那么当我发送参数时如何使用它?

【问题讨论】:

标签: python shell command-line


【解决方案1】:

& 是一个 你的 shell 中的元字符,它告诉你的 shell 把命令放在后台。这就是为什么您会在终端上看到后台进程的 PID:

[1] 8682

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

$ python test.py sds\&ss
$ python test.py "sds&ss"

【讨论】:

    【解决方案2】:

    符号& 在终端中具有含义。这意味着在后台执行第一个命令和在前面执行第二个命令。不幸的是,ss 也是一个有效的命令。你在后台执行python test.py sds,然后执行ssss 是一种网络监控协议,这就是您在这些输出中看到的原因。

    像这样使用你的命令:python test.py 'sds&ss'

    【讨论】:

      猜你喜欢
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 2016-10-29
      相关资源
      最近更新 更多