Объединение команд

Опубликовано mensh - вт, 11/22/2005 - 15:42

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

Амперсанд - оператор объединения команд в Linux

Применение точки с запятой невозможно в том случае, когда выполнение второй команды всецело зависит от успешного окончания первой.

Запуск команды при возвращении первой командой нулевого значения

Для объединения двух команд таким образом, что вторая команда будет выполняться, только если первая возвратила нулевое значение используется оператор управления &&. В этом случае вторая команда запускается после успешного выполнения первой и не запускается при отрицательном результате первой:

~$ cd ~/src && tar xzvf ~/download/brasero/brasero-0.7.90.tar.gz

В этом примере содержимое архива извлекается в каталог ~/src в том случае, если он существует, в противном случае команда tar не будет запущена.

Запуск команды при возвращении первой командой ненулевого значения

Для объединения двух команд таким образом, что вторая команда будет выполняться, только если первая возвратила ненулевое значение используется оператор управления ||. В этом случае вторая команда запускается, если первая завершилась с ошибкой и не запускается при успешном выполнении первой команды. Этот оператор часто применяется для тестирования с условием: существует ли заданный каталог, если нет, то он будет создан:

~$ cd ~/src || mkdir ~/src

Комбинированный прием

Оба представленных примера можно объединить:

~$ cd ~/src || mkdir ~/src && cd ~/src && tar xzvf ~/download/brasero/brasero-0.7.90.tar.gz

В последнем примере был создан каталог ~/src (при его отсутствии), затем был выполнен переход в этот каталог и распаковка в него архивного файла.

Поделиться с друзьями