2013-11-09 3 views

ответ

4

Одиночный амперметр (&) используется для фонового рисунка. Это заставляет команду запускаться в фоновом режиме.

Кроме того, из man bash:

Если команда завершается оператором & управления, оболочка выполняет команду в фоновом режиме в подоболочки. Оболочка не не ждать завершения работы команды, и возвращается статус 0.

Так что, если вы пишете что-то вроде этого:

find -name hello & 

Это заставит команду find быть раздвоенным и бежать в фоновом режиме

В вашем случае один амперметр & никак не связан с этим процессом.

Вы, вероятно, ищет

command1 && command2 
5

Вероятно, вы хотите знать о && не & (что для выполнения команды в фоновом режиме)

Эта команда:

command1 | command2 

Средства пропускают выход команды 1 в качестве входного сигнала (stdin) команды2

Но в этой команде:

command1 && command2 

Средства выполнения command2 ТОЛЬКО если command1 успешно

+0

Вопрос был о '&', а не '&&', хотя возможно, что OP означает '&&'. – pfnuesel

+0

@pfnuesel: почти наверняка из формулировки OP, хотя OP писал '&', но на самом деле он запрашивал '&&' – anubhava

+0

Тогда укажите это в своем ответе. – pfnuesel

3

& не связаны два процесса в любой форме; он запускает процесс в «фоновом режиме», так что запущенная вами оболочка продолжает свою работу, не дожидаясь завершения процесса, как обычно.

Возможно, вы думаете о &&. Командная строка

command 1 && command 2 

выполняет первый command 1, и если он успешен (выходы с кодом состояния 0) он выполняет command 2. Состояние выхода для соединения - это состояние выхода первой команды, если оно не выполнено, в противном случае статус выхода равен 2.

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

./configure && make && make test && make install 
Смежные вопросы