2016-09-14 210 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

感谢您的回答。为我工作。在我的情况下,没有参数的空间。 –