我知道如何在 Ruby 中运行脚本。我通常使用反勾号,它们工作正常。最近我们收到了向脚本提供更多参数的请求,问题就发生在这里。
最初,它看起来像这样:一个全局变量定义为:
SCRIPT = "/opt/customer/send_command.pl"
然后,我们调用
status =`"#{SCRIPT}" -c "ctl.pl qstatus"`
queue = `"#{SCRIPT}" -c "ctl.pl queue"`
一切安好。现在,脚本 send_command.pl 中多了一个参数。所以我将全局变量 SCRIPT 更改为:
SCRIPT = "/opt/customer/send_command.pl -p production"
我使用相同的方式调用该脚本:
status =`"#{SCRIPT}" -c "ctl.pl qstatus"`
但我收到错误消息:
sh: /opt/customer/send_command.pl -p production: not found
如果我放弃 SCRIPT 变量,只需像这样直接调用脚本:
status = `/opt/customer/send_command.pl -p production -c "ctl.pl qstatus"`
它按预期工作。
我的问题是为什么会发生这种情况以及如何解决?我想我可以手动将 -p production 放在任何地方,但它不太理想并且很容易出错。