Насколько я знаю, использование &
после команды для запуска в фоновом режиме.
Пример &
использования:tar -czf file.tar.gz dirname &
Но как насчет &&
? (посмотрите на этот пример: /server/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )
bash
shell
command-line
syntax
капитан
источник
источник
false && echo "Will not be printed"
.В раковине, когда вы видите
Цель состоит в том, чтобы выполнить команду, которая следует
&&
только в том случае, если первая команда выполнена успешно. Это идиоматично для оболочек Posix, а не только в Bash.Он намерен предотвратить запуск второго процесса в случае сбоя первого.
Вы можете заметить, что я использовал слово «намерение» - это не зря. Не все программы имеют одинаковое поведение, поэтому для того, чтобы это работало, вы должны понимать, что программа считает «неудачей» и как она ее обрабатывает, читая документацию и, при необходимости, исходный код.
Ваша оболочка считает возвращаемое значение 0 для истинного, другие положительные числа для ложного
Программы возвращают сигнал при выходе. Они должны возвращать 0, если они успешно завершаются, или больше нуля, если они этого не делают. Это позволяет ограниченное количество связи между процессами.
&&
Упоминаются какAND_IF
в грамматике POSIX оболочки , которая является частьюand_or
списка команд, которые также включают в себя,||
который являетсяOR_IF
с подобной семантикой.Грамматические символы, приведенные в документации:
И грамматика (также приведенная в документации), которая показывает, что любое число
AND_IF
s (&&
) и / илиOR_IF
s (||
) может бытьand_or
связано вместе (как определено рекурсивно):Оба оператора имеют одинаковый приоритет и оцениваются слева направо (они являются ассоциативными слева). Как говорят в документах:
В первом случае false - это команда, которая выходит со статусом
1
что означает,
echo foo
что не работает (т.е. короткое замыканиеecho foo
). Затем командаecho bar
выполняется.Во втором случае true выходит с кодом
0
и, следовательно
echo foo
, не выполняется, тоecho bar
выполняется.источник
Для & & 'довольно часто используется компиляция программного обеспечения с помощью автоинструментов. Например:
В основном, если конфигурация завершается успешно, make запускается для компиляции, а если это успешно, make запускается от имени пользователя root для установки программы. Я использую это, когда я в основном уверен, что все будет работать, и это позволяет мне делать другие важные вещи, такие как просмотр стека и не отслеживание прогресса
Иногда я действительно увлекаюсь ...
Я делаю это, например, когда делаю Linux с нуля.
источник
set -o errexit
для Bash.&&
Строки команды вместе. Последовательные команды выполняются только в случае успеха предыдущих.Точно так
||
же позволит последующей команде выполнить, если предыдущая не удалась.Смотрите Программирование Bash Shell .
источник
Смотрите пример:
Shell попытается создать каталог,
test
а затем, только если он был успешным , попытается создать файл внутри него.Таким образом, вы можете прервать последовательность шагов, если один из них не удался.
источник
Это выполнение второго оператора, если первый оператор заканчивается успешно. Как если бы заявление:
Его первая попытка, если 1 == 1, если это правда, он проверяет, если 2 == 2
источник
&&
if
тесты работают в bash. Я никогда не думал об этом как о цепочке команд сравнения, которые ломались, когда любая из них терпела неудачу. Итак, у вас есть мое мнение :)||
команды для цепочки, пока одна из них не преуспеет:eei || leu || uie || echo prout3 || echo "never executed"
command_1 && command_2
: выполнить команду_2 только тогда, когда команда_1 выполнена успешно.command_1 || command_2
: выполнить команду_2 только в том случае, если команда_1 не выполнена успешно.Похоже на то, как условие «если» выполняется в основном языке программирования, например, в
if (condition_1 && condition_2){...}
условии_2 будет опущено, если условие_1 равно,false
а вif (condition_1 || condition_2){...}
условии_2 будет опущено, если условие_1 выполненоtrue
. Видите, это тот же трюк, который вы используете для кодирования :)источник
Когда программа проверяет наличие команды, программа создает число, называемое кодом выхода, если оба условия выполняются, код выхода равен нулю (0), в противном случае код выхода является положительным числом. только при отображении «Равно», если код выхода равен нулю (0), что означает, что оба условия выполняются.
источник
if [[ ($first_command == "1") && ($two_command == "2") ]];then echo "Equal"; fi