1

Я понимаю, что в программировании bash comamnd1;command2;command3 будет запускать их последовательно, а command1&&command2&&command3 будет запускать их параллельно. Однако, что происходит, когда я объединяюсь ; и && вместе, например command1 ; command2 && command 3? Каков приоритет между ; и && в bash? Указанная выше команда эквивалентна (command1;commmand2) && command3 или to (command1);(command2 && command3)

1 ответ1

4

Первое: чтобы запустить команду в фоновом режиме, вы набираете ее, а затем одиночный & , двойной && является логическим и оператором (а также || логическим или). Выполнение command1 && command2 возвращает логическое значение true (т. Е. Код возврата 0, что означает "без ошибок"), если обе команды возвращаются без ошибок. Как часто используемый побочный эффект, команда2 не выполняется, когда команда 1 возвратила ошибку, поскольку результат логической операции и операции не может привести к истине, если первый аргумент уже известен как ложный.

command1 ; command2 & command3

Команды выполняются слева направо: первый command1 запускается, ждали , пока он не закончит, а затем command2 работать в фоновом режиме (как это следует & и сразу же с последующим command3

Вы можете использовать фигурные скобки для запуска последовательности команд в фоновом режиме, например:

{ command1 ; command2 ; } & command3

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