我在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
感谢。
答案 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)
希望它有所帮助。