[Comm] shell logical expressions

Denis Kirienko =?iso-8859-1?q?dk_=CE=C1_altlinux=2Eru?=
Пн Авг 20 11:48:43 MSD 2007


Eugene Prokopiev пишет:

>>> Нужно выполнить несколько команд, если хотя бы одна вернула не 0, тоже 
>>> вернуть не 0 и выругаться. Делаю примерно так:

>> cmd1 && cmd2 || { echo "ERROR" ; exit 1 ; }
>> не подойдет?

> если cmd1 или cmd2 (или обе вместе - и это уже постановке задачи не 
> удовлетворяет) вернули 0, выполнится то, что в {}, т.к. результат ИЛИ 
> еще не известен, т.е. вернется не 0
> 
> если cmd1 и cmd2 вернули не 0, то {} не выполнится, т.к. результат ИЛИ 
> уже известен, и ругани не будет, хотя вернется и правда не 0

Как раз наоборот. Если cmd1 и cmd2 вернули обе ноль, то {} не
выполняется и вернется 0.

Если хотя бы одна из cmd1 или cmd2 вернули не ноль, то выполняется {}.

Поэкспериментируйте, заменив команды на true (возвращает 0) и false
(возвращает 1).


Но Мишин вариант мне нравится больше.

--
Денис




Подробная информация о списке рассылки community