我试图通过我的终端启动一个脚本。它在浏览器中运行良好,但在终端上运行不正常。
我试过了...
sudo curl https://www.example.com/myscript?info=1
sudo wget -q -O- https://www.example.com/myscript?info=1
sudo wget https://www.example.com/myscript?info=1
这是我得到的输出...
[2] 25034
[1] Done
但我知道它不起作用,因为部分代码会发送一封电子邮件,当我从浏览器运行 url 时会发送这封电子邮件,但从终端运行时却无法发送。
答案1
似乎你&
的 url 中有某个地方,因此 shell 正在将进程发送到后台。
为了解决这个问题,请引用该 url。
例如,如果您使用:
curl https://www.example.com/myscript/foo&bar
shell 会将 url 视为https://www.example.com/myscript/foo
,之后&
会导致curl https://www.example.com/myscript/foo
进程进入后台。请注意,bar
after&
也缺失了。
因此你需要引用该 url:
curl 'https://www.example.com/myscript/foo&bar'
curl "https://www.example.com/myscript/foo&bar"
还要注意,?
对 shell 来说具有特殊含义(表示任何单个字符),因此当您的参数中的任何地方有 shell 元字符时,您应该引用该参数(除非有意)。