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