[英]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: 如果par1
或par2
可以嵌入空格,则应将其嵌入双引号或单引号中:
@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.