Как выполнить несколько команд в bash, некоторые в фоновом режиме

Я хотел бы выполнить несколько команд в bash, но некоторые из них выполняются в фоновом режиме. Лучший способ объяснить это-использовать следующую команду, которая не работает...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

Я думаю, это можно рассматривать как два вопроса:

  1. как завершить & в команде?
  2. что было бы лучшим способом сделать это?

другие детали, если они имеют значение:

  • Opensuse 13.2
  • gnome-shell
24
задан JakeGould
26.02.2023 9:56 Количество просмотров материала 2392
Распечатать страницу

2 ответа

вы должны попробовать

(sleep 5; ls) &  echo "Now"

это работает так, как вы хотите.

3
отвечен MariusMatutiae 2023-02-27 17:44

все, что вам нужно сделать, это удалить ;. & действует как разделитель команд сам по себе, поэтому добавлять ; после этого недопустимо.

(sleep 30; command1; command2 param ) & anotherCommand

(пробелы после точки с запятой не нужны, я просто легче читать таким образом. Это одно из немногих мест, где пробелы необязательны в синтаксисе оболочки-в большинстве мест они либо обязательны, либо запрещены.)

что касается лучших способов сделать это... это действительно зависит от того, что вы пытаетесь сделать. Нам понадобится больше информации, чтобы сделать лучшие предложения.

4
отвечен Gordon Davisson 2023-02-27 20:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх