Физический движок Javascript и симулированная бесконечная кривая

Сценарии оболочки, независимо от того, как они выполняются, выполняют одну команду за другой. Таким образом, ваш код выполнит results.sh после завершения последней команды st_new.sh.

Теперь есть специальная команда, которая испортит это: &

cmd &

означает: «Запустите новый фоновый процесс и выполните в нем cmd. После запуска фонового процесса немедленно продолжите следующую команду в скрипте.»

Это означает, что & не ждет cmd сделать это. Я предполагаю, что st_new.sh содержит такую ​​команду. Если это так, вам нужно изменить скрипт:

cmd &
BACK_PID=$!

Это ставит идентификатор процесса (PID) нового фонового процесса в переменную BACK_PID. Вы можете дождаться, когда это закончится:

while kill -0 $BACK_PID ; do
    echo "Process is still active..."
    sleep 1
    # You can add a timeout here if you want
done

или, если вы не хотите особого обращения / вывода просто

wait $BACK_PID

Обратите внимание, что некоторые программы автоматически запускают когда вы запускаете их, даже если вы опустите &. Проверьте документацию, у них часто есть возможность записать свой PID в файл или вы можете запустить их на переднем плане с помощью опции, а затем использовать команду & оболочки, чтобы получить PID.

21
задан SuperSkunk 23 May 2012 в 18:02
поделиться