1

Допустим, у меня есть три команды, которые я запускаю так:

a && b && c

Это запустит b после завершения, и c после завершения b .

Что делать, если я сделал это:

a && b

Пока это выполняется, я хочу добавить c в качестве условной команды. Это можно сделать?

3 ответа3

2

Я бы сделал это:

  • a && b
  • нажмите ctrl-Z чтобы приостановить текущий конвейер
  • bg 1 чтобы запустить его в фоновом режиме
  • wait %1 && c

wait ожидает завершения заданного задания и возвращает его статус результата, так что вышеприведенное ведет себя как a && b && c .

Вы также можете определить псевдоним или функцию, например, alias bgwait='bg 1 && wait %1' . Затем, после нажатия ctrl-Z , все, что вам нужно набрать, это bgwait && c . Поддержка нескольких заданий оставлена в качестве упражнения для читателя.

0

Результат последней операции хранится в $? , 0 означает, что ошибок не было, все остальное - проблема.

Вы можете использовать его, например, так

if [ $? -eq 0 ]; then c; fi

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

-2

Для NT вы можете ввести новую команду и нажать клавишу ВВОД во время выполнения текущей команды.

Так, например,

c:\blah> dir /s

где бла достаточно велик, чтобы вы успели напечатать, пока материал прокручивается на экране.

теперь все эти вещи прокручиваются на экране

и пока он появляется, наберите mem

затем после завершения dir /s запустится mem.

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