Послідовні команди


14

Чи правильно я припускаю, що, ;приєднуючись до двох команд у рядку, Bash завжди чекає, поки перша команда завершиться, перш ніж виконати другу команду? І аналогічно, у скрипті оболонки, що містить дві різні команди на різних рядках, Bash завжди чекає, поки команда в першому рядку не завершиться перед виконанням команди у другому рядку?

Якщо це так, чи є спосіб виконати дві команди в одному рядку або в сценарії, щоб друга команда не чекала, поки перша команда не закінчиться?

Також, чи різні рядки в сценарії оболонки еквівалентні окремим рядкам, об'єднаним ;або &&?


Відповіді:


26

Ви праві, команди в сценаріях виконуються послідовно за замовчуванням.

Ви можете запустити команду у фоновому режимі, додавши до неї &(єдину амперсанд).

Команди в окремих рядках еквівалентні командам, об'єднаним ;за замовчуванням. Якщо ви скажете своїй оболонці перервати ненульові коди виходу ( set -e), сценарій буде виконуватися так, ніби всі команди були з'єднані &&.


2

Щоб відповісти на ваше друге запитання, ви можете &запустити команду у фоновому режимі та продовжити сценарій, не чекаючи, поки він закінчиться.

commandA & commandB

Якщо ви запускаєте це на інтерактивному терміналі (замість сценарію), ви можете використовувати fgдля повернення фонову команду у фокус або jobsперегляд списку фонових завдань.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.