从命令行运行多个八度音阶脚本

时间:2014-07-23 17:33:27

标签: shell unix process octave

我有多个八度脚本,我需要按顺序执行。第二个脚本依赖于第一个脚本,因此必须等待第一个脚本完成。我还想从命令行传入2个参数。但是,以下脚本在执行第二个脚本之前不会等待第一个脚本。我怎么能纠正这个?

EXP_ID = $1;    
NUM_FEATURES = $2;

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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"

也可能没有必要使用分号。