在我的 CentOS 7 机器上,我运行如下命令:
$curl boxname:5000/page
输出是:
$curl boxname:5000/page
[1] 55068
$ curl: (6) Couldn't resolve host 'boxname'
[1]+ Exit 6 curl boxname:5000/page
我不担心它无法解析主机名,这是预期的。问题是 - 为什么curl 在子shell 中运行?我需要它不生成新作业,以便我可以检查退出代码。
答案1
如果实际的 URL 包含不带引号的&
字符,则该点之前的命令将被 shell 解释为在后台运行的命令。 URL 的其余部分将被视为新命令。
在命令行上指定 URL 时,请始终引用 URL。这也可以防止 URL 中的其他字符被 shell 解释为特殊字符(例如;
等?
)
答案2
我已经找到问题了。我使用的 URL 中有一个 & 符号!