2014-07-23 38 views
0

我有多个八度脚本,需要按顺序执行。第二个脚本依赖于第一个脚本,所以它必须等待第一个脚本完成。我也想从命令行传入2个参数。但是,下面的脚本不会在执行第二个脚本之前等待第一个脚本。我该如何解决这个问题?从命令行运行多个八度脚本

EXP_ID = $1;  
NUM_FEATURES = $2; 

cd fisher; 
octave computeFisherScore-AG.m $EXP_ID; 
cd ..; 
octave predictability-AG.m $EXP_ID $NUM_FEATURES; 
+0

你是否分别运行这些脚本? – konsolebox

+1

你为什么要编写一个按顺序调用Octave脚本的bash脚本?为什么不只是一个可以同时运行的Octave脚本?另外,为什么不用“#!”来制作Octave脚本? bin/octave'作为shebang行,并给它执行权限? – carandraug

+0

我同意@carandraug,不需要单独运行两个Octave脚本或依赖Shell脚本。重构您的代码或创建另一个按顺序调用另外两个Octave脚本。 – juliohm

回答

1

尝试:

EXP_ID = $1;  
NUM_FEATURES = $2; 

cd fisher; 
octave computeFisherScore-AG.m $EXP_ID; 
wait 
cd ..; 
octave predictability-AG.m $EXP_ID $NUM_FEATURES; 
wait 

退房http://www.lehman.cuny.edu/cgi-bin/man-cgi?wait+3

+0

谢谢!我需要玩弄这个来弄清楚是否解决了它! –

1

也许你的倍频脚本在后台运行。您可以使用此解决方法:

waitpid() { 
    while kill -s 0 "$1" >/dev/null 2>&1; do 
     sleep 1 
    done 
} 

cd fisher; 
octave computeFisherScore-AG.m $EXP_ID; 
waitpid "$!" 
cd ..; 
octave predictability-AG.m $EXP_ID $NUM_FEATURES; 

我还建议你报你的论点正确,以防止意外字的拆分和路径扩展:

cd fisher 
octave computeFisherScore-AG.m "$EXP_ID" 
waitpid "$!" 
cd .. 
octave predictability-AG.m $EXP_ID "$NUM_FEATURES" 

分号也可能没有必要。

+0

谢谢!我也需要解决这个问题,找出解决办法!字符串拆分绝对也是一个问题 –

+0

谢谢你的报价建议。这绝对是它的一部分。 –

+0

@Adam_G好的。我仍然很好奇为什么你的原始脚本不能用于“八度”。它本身不能在后台运行。但是'wait'与它一起工作。 – konsolebox