2014-07-23 6 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

Почему вы пишете скрипт bash, который последовательно вызывает октавные скрипты? Почему не только один октавный скрипт, который работает одновременно? Кроме того, почему бы вам не сделать сценарий Octave, используя '#! bin/octave' в качестве строки shebang и предоставления ему разрешений на выполнение? – carandraug

+0

Я согласен с @carandraug, нет никакой необходимости запускать два сценария Octave отдельно или полагаться на сценарии Shell. Обновите свой код или создайте еще один скрипт Octave, который вызывает остальные два в последовательности. – juliohm

ответ

1

Try:

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

Смежные вопросы