【问题标题】:Running multiple octave scripts from command line从命令行运行多个八度脚本
【发布时间】:2014-07-23 17:33:27
【问题描述】:

我有多个 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;

【问题讨论】:

  • 您是否单独运行这些脚本?
  • 你为什么要写一个依次调用 Octave 脚本的 bash 脚本?为什么不只是一个同时运行的 Octave 脚本呢?另外,你为什么不通过使用#! bin/octave 作为shebang 行来创建一个Octave 脚本,并赋予它执行权限?
  • 我同意@carandraug,没有必要单独运行两个 Octave 脚本或依赖 Shell 脚本。重构您的代码或创建另一个 Octave 脚本,依次调用其他两个脚本。
  • 我明白你在说什么。在这种情况下,由于此问题范围之外的原因,它们需要是单独的脚本,并且通常独立运行。

标签: shell unix process octave


【解决方案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

【讨论】:

  • 谢谢!我需要解决这个问题,看看是否能解决它!
【解决方案2】:

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

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"

分号也可能不是必需的。

【讨论】:

  • 谢谢!我也需要解决这个问题,以确定是否可以解决它!字符串拆分肯定也是一个问题
  • 感谢您的报价建议。这绝对是其中的一部分。
  • @Adam_G 好的。我仍然很好奇为什么您的原始脚本不适用于octave。它不能自己在后台运行。但是wait 可以使用它。
猜你喜欢
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 2018-10-05
  • 2020-03-15
  • 2012-05-03
  • 2011-05-01
  • 2013-09-14
相关资源
最近更新 更多