2013-06-03 69 views
1

許多參數我順利地通過一個參數的Rails bash腳本:傳遞給腳本的Rails

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腳本?

+0

「不行」是什麼意思? 'par1'和'par2'中有什麼樣的值?當'par1'就像'bobby tables''時,你預期會發生什麼?當你'%x []'時,你期望當前的工作目錄是什麼?如何在shell腳本內? –

+0

我期望執行此腳本並重命名我的目錄名稱。 par1 - 實際的目錄名稱,par2 - 新的目錄名稱。該位置是「存儲庫/ DIRECOTRY」 – speedy901990

回答

-1

我不知道%x。但是

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

應該工作。

` - 反引號

+0

不幸的是,它不工作。執行這個之後什麼也沒有發生。這個腳本在從終端執行時效果很好。它不從Rails控制器。 – speedy901990

+0

您可以在變量中獲取返回值並將其打印(或記錄)到控制器中?也嘗試從rails控制檯執行這個腳本。 – usha

+0

「mv:can not stat'repositories/qX':No such file or directory」 它返回丟失的文件。它與腳本的第二個參數相關聯。 – speedy901990

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,當你使用時會發生這種情況或反引號,使用FileUtils built-in ability to mv文件:

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