1

我成功地将一个参数传递给 Rails 中的 bash 脚本:

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

现在我需要将 2 个参数传递到不同的脚本中。此解决方案不起作用:

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

我要使用的脚本是:

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

如何向 Rails 中存储的 bash 脚本发送更多参数?

4

2 回答 2

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

如果par1par2可以嵌入空白,则应将它们嵌入双引号或单引号中:

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

或者:

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

但是,不要创建子shell(当您使用%x或反引号时会发生这种情况),而是使用FileUtils 对文件的内置功能mv

require 'fileutils'
@result = FileUtils.mv(par1, par2)
于 2013-06-03T21:02:34.463 回答
-1

我不知道 %x。但

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

应该管用。

` - 反引号

于 2013-06-03T19:01:08.097 回答