2

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

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

Я полагаю, это можно принять за два вопроса:

  1. Как прекратить & в команде?
  2. Что может быть лучше для этого?

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

  • Opensuse 13.2
  • гном-оболочки

2 ответа2

4

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

(sleep 30; command1; command2 param ) & anotherCommand

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

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

3

Тебе стоит попробовать

(sleep 5; ls) &  echo "Now"

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

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