0

我知道如何在 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 放在任何地方,但它不太理想并且很容易出错。

4

2 回答 2

6

它没有用,因为你有额外的双引号。要修复它,请将它们删除。

status =`#{SCRIPT} -c "ctl.pl qstatus"`
于 2013-10-30T15:57:25.293 回答
1

删除双引号:

从:

status =`"#{SCRIPT}" -c "ctl.pl qstatus"`

status =`#{SCRIPT} -c "ctl.pl qstatus"`

除非你想尝试像这样逃避它们:

status ="#{SCRIPT} -c \"ctl.pl qstatus\""
于 2013-10-30T16:01:24.297 回答