Я понимаю, что в программировании bash comamnd1;command2;command3 будет запускать их последовательно, а command1&&command2&&command3 будет запускать их параллельно. Однако, что происходит, когда я объединяюсь ; и && вместе, например command1 ; command2 && command 3?
Каков приоритет между ; и && в bash? Указанная выше команда эквивалентна (command1;commmand2) && command3 или to (command1);(command2 && command3)
1 ответ
Первое: чтобы запустить команду в фоновом режиме, вы набираете ее, а затем одиночный & , двойной && является логическим и оператором (а также || логическим или).
Выполнение command1 && command2 возвращает логическое значение true (т. Е. Код возврата 0, что означает "без ошибок"), если обе команды возвращаются без ошибок.
Как часто используемый побочный эффект, команда2 не выполняется, когда команда 1 возвратила ошибку, поскольку результат логической операции и операции не может привести к истине, если первый аргумент уже известен как ложный.
command1 ; command2 & command3
Команды выполняются слева направо: первый command1 запускается, ждали , пока он не закончит, а затем command2 работать в фоновом режиме (как это следует & и сразу же с последующим command3
Вы можете использовать фигурные скобки для запуска последовательности команд в фоновом режиме, например:
{ command1 ; command2 ; } & command3
