2016-09-14 212 views
0

我有一個Ruby腳本名稱分析,我從慶典傳遞參數shell腳本的Ruby腳本執行

執行
#!/usr/bin/env ruby 
script here 

執行:

./analysis -d parameter1 -p parameter2 parameter3 

我通過傳遞不同的多次執行這個腳本參數。 有沒有辦法從shell腳本執行這些多個ruby腳本?

回答

0

像這樣的shell腳本應該工作:

# Execute Ruby script multiple times with different parameters. 

ruby ./analysis.rb -d parameter1 -p parameter2 parameter3 
ruby ./analysis.rb -d parameter4 -p parameter5 parameter6 
ruby ./analysis.rb -d parameter7 -p parameter8 parameter9 

要通過bash腳本參數變量傳遞給Ruby腳本:

# Include 9 arguments when calling the Bash script. Ruby script will be executed 3 times, with 3 of the arguments each time. 
ruby ./analysis.rb $1 $2 $3 
ruby ./analysis.rb $4 $5 $6 
ruby ./analysis.rb $7 $8 $9 
+0

謝謝你的工作。 –

+0

我也可以將參數傳遞給此shell腳本嗎? –

+0

剛剛編輯答案與如何做到這一點。 – PyroLemur

0

您的腳本的每次調用,您可以添加1行,全部3個參數,寫入一個文件,例如,params.txt。對於例如,

run1-param1 run1-param2 run1-param3 
run2-param1 run2-param2 run2-param3 
run3-param1 run3-param2 run3-param3 
... 

然後,您可以創建另一個bash腳本,比如說repeat-analysis.sh讀取每次1線並運行analysis.rb與該行的參數。示例腳本如下:

#!/bin/bash 

while read p1 p2 p3; do 
    ./analysis.rb -d "$p1" -p "$p2" "$p3" 
done 

可以按如下方式運行此腳本:

$ ./repeat-analysis.sh < params.txt 

這裏一個重要的警告是,如果您的參數沒有在其中的空間,這隻會工作。讓我知道,如果這不是真的,我可以嘗試改進上面的腳本來處理。

+1

感謝您的回答。爲我工作。在我的情況下,沒有參數的空間。 –