6

Я хочу сделать следующее из командной строки tcsh, предпочтительно в 1 строку:

build_cmd1 &
build_cmd2 &
build_cmd3 &
wait until all parallel build commands finish
regression_cmd

То есть я хочу отключить кучу команд сборки, заблокировать их до выхода и запустить другую команду. Я хочу сделать это из командной строки tcsh.

1 ответ1

4

:: проверяет справочные страницы ::

Похоже, что csh и производные поддерживают wait , поэтому рассмотрим что-то вроде

% cmd1 &; cmd2 &; cmd3 &; wait; thing_to_do_after

или потому что && и || операторы короткого замыкания вы могли бы использовать

% (cmd1 &; cmd2 &; cmd3 &) && thing_to_do_after

но только если вы уверены в состоянии выхода подоболочки (true означает использование && а false означает использование ||).

Если вы хотите, чтобы ожидание было непроницаемым для ранее запущенных фоновых задач, поместите его в subshell (()) следующим образом:

% (cmd1 &; cmd2 &; cmd3 &; wait) && thing_to_do_after

или же

% (cmd1 &; cmd2 &; cmd3 &; wait; thing_to_do_after)

// пожалуйста, знайте, что я не использовал tcsh целую вечность ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .