[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