From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Injected-Via-Gmane: http://gmane.org/ To: community@lists.altlinux.org From: Denis Kirienko Date: Mon, 20 Aug 2007 11:48:43 +0400 Message-ID: References: <46C57871.7000007@stc.donpac.ru> <46C933C2.6080303@stc.donpac.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: 212.65.71.74 User-Agent: Thunderbird 2.0.0.6 (X11/20070804) In-Reply-To: <46C933C2.6080303@stc.donpac.ru> X-Enigmail-Version: 0.95.2 Sender: news Subject: Re: [Comm] shell logical expressions X-BeenThere: community@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: dk@altlinux.ru, ALT Linux Community List-Id: ALT Linux Community List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Aug 2007 07:48:57 -0000 Archived-At: List-Archive: List-Post: 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). Но Мишин вариант мне нравится больше. -- Денис