通常在使用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只输出内容?
答案 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}})。