在Ruby中将url传递给exec命令

时间:2013-10-17 18:08:23

标签: ruby shell

我需要在Ruby中调用一个shell命令,它接收一个URL参数。我是这样做的:

output = `casperjs myscript.js #{url}`

但是,如果URL包含奇怪的参数,例如'('或'|',我会从shell中获取错误。例如:

传递'https://www.theshadestore.com/window-treatments/product/solar-shade?preselected_collections[]=3-percent-basics&preselected_collections[]=5-percent-basics&preselected_collections[]=10-percent-basics'

我收到以下错误:

sh: 1: preselected_collections[]=10-percent-basics: not found
sh: 1: preselected_collections[]=5-percent-basics: not found

当我通过时:'http://www.coastal.com/nike-8206-200-brown?rsView=1&ga=F|M|K'

我明白了:

sh: 1: M: not found
sh: 1: K: not found

我该如何避免?我希望实际上整个URL都能正确传递。

2 个答案:

答案 0 :(得分:1)

我相信反引号用/bin/sh执行包含的字符串,所以你可能想要:

output = `casperjs myscript.js '#{url}'`

答案 1 :(得分:0)

我认为这会有用

casperjs myscript.js "#{url}"

当我在irb中测试时,它适用于您在此处提供的其中一个网址