简体   繁体   English

许多参数传递给Rails中的脚本

[英]Many parameters passed to script in Rails

I successfully passed one parameter to bash script in Rails: 我成功地将一个参数传递给Rails中的bash脚本:

par = @repository.repo_name
@result = %x[script/delete_repo.sh #{par}]

Now i need to pass 2 parameters into different script. 现在,我需要将2个参数传递到不同的脚本中。 This solution doesn't work: 该解决方案不起作用:

par1 = params[:repository][:repo_name1]
par2 = params[:repository][:repo_name2]
@result = %x[script/rename_repo.sh #{par1} #{par2}]

The script i want to use is: 我要使用的脚本是:

#!/bin/sh
mv repositories/$1 repositories/$2

How to send more parameters to stored bash scripts in Rails ? 如何在Rails中向存储的bash脚本发送更多参数?

par1 = params[:repository][:repo_name1]
par2 = params[:repository][:repo_name2]
@result = %x[script/rename_repo.sh #{par1} #{par2}]

If par1 or par2 can have embedded blanks you should embed them inside double or single quotes: 如果par1par2可以嵌入空格,则应将其嵌入双引号或单引号中:

@result = %x[script/rename_repo.sh "#{par1}" "#{par2}"]

or: 要么:

@result = %x[script/rename_repo.sh '#{par1}' '#{par2}']

But, instead of creating a subshell, which happens when you use %x or backticks, use FileUtils built-in ability to mv files: 但是,而不是创建一个子shell,当你使用这恰好%x或反引号,使用内置在能力fileutils中的mv文件:

require 'fileutils'
@result = FileUtils.mv(par1, par2)

I don't know about %x. 我不了解%x。 but

`sh script/delete_repo.sh #{par1} #{par2}`

should work. 应该管用。

` - backtick `-反引号

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM