为什么cURL输出进程名称?以及如何摆脱它?

时间:2016-07-09 03:55:23

标签: bash curl

通常在使用cURL时输出如下:

alex$ curl http://some-url
some-content

但是,对于某些网址,输出是不同的:

alex$ curl http://some-url
[1] 81030
alex$ some-content
[1]+  Done                    curl http://some-url

为什么会发生这种情况以及如何摆脱它并使cURL只输出内容?

2 个答案:

答案 0 :(得分:4)

如果some-url包含&个字符,则shell会将其解释为在后台运行该进程的命令。

要克服它,可以使用&(前缀反斜杠)转义\&

答案 1 :(得分:2)

Kevin's answer很有帮助,凯文在没有具体信息的情况下推断您的具体问题值得称赞。

让我用一般建议补充它:

而不是单独通过\转义shell元字符(对shell具有特殊含义的字符) - 为它们添加前缀,请考虑:

  • 文字括在引号中;例如:curl 'http://example.org/search&query=foo'

  • double 引号中包含变量引用;例如:url='http://example.org/search&query=foo'; curl "$url"

这样你就不必担心要逃脱的个人角色了。

通常,仅使用不带引号的文字/变量引用,如果您明确想要 shell来解释它们(通过应用所谓的{ {3}})。