从Ruby调用多个args的Bash命令?

时间:2011-03-03 11:06:24

标签: ruby-on-rails ruby bash shell

我在rails项目中编写了这段代码。它是执行一个shell脚本,但是我的shell脚本只能捕获@directdown。

rails script

@cmd = "/downafile.sh #{@directdown} #{@file.id} #{@filename}"
`#{@cmd}`

shell脚本

echo $1 >> /tmp/ceshi.tmp
echo $2 >> /tmp/ceshi.tmp
echo $3 >> /tmp/ceshi.tmp

感谢。

3 个答案:

答案 0 :(得分:1)

``和system命令以类似的方式工作。 但系统方法会在成功时返回true。

试试这个:

@cmd = "/downafile.sh '#{@directdown}' '#{@file.id}' '#{@filename}'"
  `#{@cmd}`

答案 1 :(得分:1)

尝试使用puts @cmd查看生成的命令,并查看命令是否符合您的意图。如果是尝试从终端执行它来测试你的shell脚本是否有效。我认为参数@file.id@filename值可能是nil,因此在插值时它将被替换为“”。他们的价值也要检查。

答案 2 :(得分:-1)

我不知道``在Ruby中的含义是什么,但我认为你可以使用系统函数来调用外部程序。像,

   @cmd = "/downafile.sh #{@directdown} #{@file.id} #{@filename}"
   system(@cmd)

希望它有所帮助。