0

我需要在 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 都正确传递。

4

2 回答 2

1

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

output = `casperjs myscript.js '#{url}'`
于 2013-10-17T18:51:39.857 回答
0

我认为这会奏效

casperjs myscript.js "#{url}"

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

于 2013-10-17T18:17:00.150 回答