Выполнение нескольких команд в командной строке

28.02.2018

Теги: BashCLILinuxКоманда

В командной строке можно объединять сразу несколько команд в одну строку (в один запуск). Например, вам нужно выполнить сначала одну команду, за ней вторую и так далее. Но вы хотите сразу вбить в командной строке одну инструкцию, которая все сделает.

Выполнение команд последовательно

Например, мы хотим выполнить сначала одну команду. Затем, когда она отработает (вернет управление в командную строку), нам нужно запустить вторую команду. Для этого служит символ «;». Таким образом, если набрать в терминале:

$ command1; command2; command3

то сначала запустится первая команда command1, а когда управление вернется в терминал, то запустится вторая и так далее.

Зависимое выполнение команд

Символы && и || означают не что иное, как логическое И и ИЛИ. Поэтому когда мы пишем:

$ command1 && command2 && command3

то это означает, что команда command2 будет выполнена только в том случае, если команда command1 была выполнена успешно (вернула нулевой код завершения). Каждая следующая команда выполняется только при успешном выполнении предыдущей.

Если код завершения программы или команды 0 — это означает ИСТИНА, любое другое значение (как правило, это код ошибки) — ЛОЖЬ.

Если мы пишем:

$ command1 || command2 || command3

то команда command2 будет выполнена только в том случает, если command1 вернула ошибку (не нулевой код завершения). Каждая следующая команда запускается только если предыдущая вернула ошибку.

Такое поведение объясняется очень просто: интерпретируя И нет смысла выполнять вторую команду, если первая вернула ошибку. А интерпретируя ИЛИ нет смысла выполнять вторую команду если первая выполнилась с успехом.

Пример использования:

$ sort bigdata > /tmp/sorted && mv /tmp/sorted > bigdata

Этот же результат будет получен в результате выполнения кода:

if sort bigdata > /tmp/sorted ; then
    mv /tmp/sorted > bigdata
fi

Операторы && и || можно объединять в одной командной строке:

$ who | grep "^$name " > /dev/null && echo "$name logged on" || echo "$name not logged on"

Первая команда echo выполняется при удачном выполнении команды grep, а вторая — при неудачном.

Эти операторы часто используются в условиях if:

if command1 && command2 ; then
    command3
fi

Обе команды должны возвратить нулевой код завершения (логическая операция И), чтобы выполнилась команда command3. Этот фрагмент кода можно записать и так:

$ command1 && command2 && command3

Еще одни пример использования:

if command1 || command2 ; then
    command3
fi

Хотя бы одна команда должна возвратить нулевой код завершения (логическая операция ИЛИ), чтобы выполнилась команда command3. Этот фрагмент кода можно записать и так:

$ command1 || command2 && command3

Поиск: Bash • CLI • Linux • Команда

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.