使用Ruby中的参数运行shell脚本

时间:2013-10-30 15:55:04

标签: ruby shell

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

2 个答案:

答案 0 :(得分:6)

它没有用,因为你有额外的双引号。要解决此问题,请将其删除。

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

答案 1 :(得分:1)

删除双引号:

从:

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

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

除非您想尝试将其转义为:

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